Solr搜索相关性

时间:2019-10-04 07:21:42

标签: solr

我使用solr,结果得分有麻烦。例如 我有这样一个带有一个字段的文档(例如“内容”):

  1. 内容=车
  2. 内容=汽车
  3. content =令人敬畏的生活
  4. 内容=可食用

然后使用此类参数“ :{       “ mm”:“ 1”,       “ q”:“汽车”,       “ tie”:“ 0.1”,       “ defType”:“ dismax”,       “ fl”:“ *,得分”,}

我希望看到这样的结果:

  • 汽车:5分
  • 汽车:4.8分
  • 真棒:3
  • 敬畏可食用:3

没有“ s”的词应该更高,但是我有奇怪的事情。我如何提高绝对匹配度(例如汽车)

1 个答案:

答案 0 :(得分:3)

之所以会这样,是因为您用于该字段的字段类型附加了词干过滤器(或ngramfilter)(这使得carscar彼此产生匹配。)您不能在这样的字段内增加“精确匹配”,因为对于Lucene来说,它们具有相同的值。 carcars的索引中存储的内容相同-后者也被处理到car

要实现此目的并获得更高的准确匹配率,请添加第二个字段,但不提供该过滤器,该过滤器仅将您的内容标记(分割)在空白上并小写标记。这样,您将有一个字段,其中carscar存储为不同的令牌,并且如果令牌不匹配,令牌将不会对得分有所贡献。

您可以在Solr中使用qf来告诉Solr您要搜索哪些字段,并且可以同时提高搜索效率-因此,在您的情况下,您会在qf=exact_field^10 text_field命中exact_field中的值将比常规字段中的命中值高十倍(确切的提升值将取决于您的用例以及查询配置文件的行为方式。)

您还可以使用不同的增强参数(bqboost)在常规查询之外应用增强(例如,向bq添加查询以复制原始查询),但先前的建议可能会很好。

相关问题