【问题标题】:How to fix Solr serach result distortion in almost same queries?如何在几乎相同的查询中修复 Solr 搜索结果失真?
【发布时间】:2016-05-25 06:20:28
【问题描述】:

这是我的 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 的问题。每种情况下的结果必须相同。


第一个查询:


第二次查询:

【问题讨论】:

    标签: java solr lucene solrj


    【解决方案1】:

    尝试使用solr.PorterStemFilterFactory

    Porter stemmer 用于英语。

    它是一个规范化过程,从单词中删除常见的结尾。

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

    在你的情况下SportsSport

    【讨论】:

    • 谢谢!但是,在我的情况下,该领域不仅适用于英语。如果我声明 olr.PorterStemFilterFactory,它对不同语言的采石场有影响吗?
    • 它可能是......但是在这个你得到的任何结果都是正确的......因为这是你索引文本的方式,你将根据你的索引得到结果(而不是在索引结束时创建的令牌...)
    • 或者另一个选项是创建许多字段,因为支持多种语言并应用语言特定的词干分析器(如果可用)...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2015-11-11
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多