我将我的一些字段从 更改text_general
为text_en
,希望利用词干提取和其他一些改进,但不幸的是,更改破坏了突出显示。似乎它只想突出显示非词干词(即词干版本与词本身相同的词,如“child”)。
我正在使用默认的 fieldType 定义:
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
并hl.fl=title&hl=true
在我的查询中启用突出显示。如果这很重要,这也是一个多面搜索。
在这种情况下,正如我所说,只有像“孩子”这样的无词干词会被突出显示。如果我从定义中的索引分析器中删除词干过滤器(仅,查询分析器似乎没有效果),text_en
则会突出显示除停用词之外的所有匹配词。此外,如果我text_en
改为使用EnglishMinimalStemFilterFactory
,则会突出显示更多的单词,我认为这是因为它们是由 Porter 词干分析器而不是由这个词干分析的。这种词的一个例子是“strides”。
有谁知道发生了什么?