Solr edismax通配符搜索找不到原始字符串

时间:2012-02-23 12:15:23

标签: solr edismax

我的Solr索引中有下一个内容: 在west indian cherry类型的字段中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

1 个答案:

答案 0 :(得分:6)

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

  

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

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

由于索引字词为cherri,因此cherry*的搜索与任何文档都不匹配。