0

我正在尝试使用 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

任何想法如何使它工作?

4

1 回答 1

0

添加答案作为先前评论的跟进。

该问题很可能是由未按预期工作的 EdgeNGramFilterFactory 引起的,并且在生成令牌时报告了不正确的偏移量。在过去几个版本的 Solr 中,此类问题已在 Jira 中多次重新打开。

我在生产设置中解决了它 luceneMatchVersion="4.5" (或者任何对你有用的版本,对于 NGramFilterFactory。

我在 Jira 评论中找到了这个解决方案,但我找不到它,所以我很抱歉,但我无法将它添加为参考。

于 2016-07-26T10:12:04.960 回答