我正在尝试使用 Apache Solr 正确突出显示。在部分匹配的情况下,我想突出显示匹配的部分单词。然而,整个单词(部分匹配搜索词)被突出显示。
例子:
搜索“adida shi”,应该会得到两项,一项名为“adidas shirts”,另一项名为“adidas red shirts”
/select?q=name:adida+shi&hl=true&hl.fl=name&qt=standardwt=json
预期突出显示:
<em>adida</em>s <em>shi</em>rts
<em>adida</em>s red <em>shi</em>rts
实际突出显示:
<em>adidas</em> <em>shirts</em>
<em>adidas</em> red <em>shirts</em>
用于突出显示的字段在 schema.xml 中定义如下:
<field name="name" type="autocomplete_text" indexed="true" stored="true"/>
该字段的字段类型如下所示:
<fieldType name="autocomplete_text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
我没有在核心配置文件中突出显示的特定配置。
我正在使用 Solr v6.0.1。使用相同配置的 solr v4.10.4 突出显示按预期工作。我浏览了 Solr wiki 的以下部分并尝试了各种突出显示参数,但我无法使其工作:
https://cwiki.apache.org/confluence/display/solr/Highlighting https://cwiki.apache.org/confluence/display/solr/Standard+Highlighter
任何想法如何使它工作?