如何在几乎相同的查询中修复Solr serach结果失真?

时间:2016-05-25 06:20:28

标签: java solr lucene solrj

这是我的Solr字段类型

<fieldType name="company_name" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
          <tokenizer class="solr.ClassicTokenizerFactory"/>
          <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
  </fieldType>

如果我需要查找字段company_name等于“Abibas Sports”的文档,则查询fq=company_name:Abibas Sportfq=company_name:Abibas Sports会返回完全不同的结果。最合适的情况是fq=company_name:Abibas Sport

如何修复单词末尾的字符 s 的问题。每种情况下结果必须相同。

首先查询:

first query result

第二次查询:

second query result

1 个答案:

答案 0 :(得分:0)

尝试使用solr.PorterStemFilterFactory

Porter stemmer用于英语。

它是一个标准化过程,可以从单词中删除常见的结尾。

Example: "riding", "rides", "horses" ==> "ride", "ride", "hors".

在您的情况下,SportsSport