4

我的 Solr 索引中有下一个内容: west indian cherryin 字段类型text_en(字段定义见下文)。

当我cherr*找到匹配项时。
还要在文档中搜索cherri*匹配词。
搜索cherry*不匹配。

我对此表示怀疑PorterStemFilterFactory,但我不明白为什么(查询分析器与索引分析器相同)。


样本查询

/solr/select?defType=edismax&q=cherry*

solrconfig.xml

...
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EnglishPossessiveFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>
...

现场分析

指数

org.apache.solr.analysis.StandardTokenizerFactory: cherry
org.apache.solr.analysis.LowerCaseFilterFactory: cherry
org.apache.solr.analysis.EnglishPossessiveFilterFactory: cherry
org.apache.solr.analysis.PorterStemFilterFactory: cherri <-- note the change from cherry to cherri

询问

org.apache.solr.analysis.StandardTokenizerFactory: cherry
org.apache.solr.analysis.LowerCaseFilterFactory: cherry
org.apache.solr.analysis.EnglishPossessiveFilterFactory: cherry
org.apache.solr.analysis.PorterStemFilterFactory: cherri
4

1 回答 1

8

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#Analyzers提到 -

在通配符和模糊搜索中,不对搜索词执行文本分析。

因此,搜索查询在查询期间不会进行任何分析。因此,被索引的术语将与正在搜索的术语不同。

由于索引词是cherri,因此搜索cherry*不会匹配任何文档。

于 2012-02-23T12:39:02.580 回答