Solr - 更改分数的计算方式? (总和而不是Max)

时间:2018-06-04 20:22:33

标签: solr relevance

我们与Solr结果存在一些相关性问题。在此特定示例中,我们将产品A显示在产品B之上。产品A的标题包含搜索词。产品B的标题还包含搜索字词及其描述和类别名称。因此,从逻辑上讲,产品B应该更具相关性并且出现在产品A之上,但它不会。

架构配置为考虑所有这些额外字段。在使用...&debugQuery=true&debug.explain.structured=true分析查询的调试信息后,两个产品似乎都达到了相同的分数。进一步看,我可以看到这些额外的字段有分数计算,但由于某种原因,解析器只取这些分数的最大值而不是导致它相同的总和:

enter image description here

enter image description here

Solr是否有这样的行为?有没有办法改变这种行为来使用总和而不是最大值? (就像图像中的父元素一样)

1 个答案:

答案 0 :(得分:2)

如果您使用的是Dismax / eDismax查询解析器,则可以使用 tie 参数控制分数的计算方式。

Solr文档解释得非常好:

tie (Tie Breaker) parameter

  

tie参数指定一个浮点值(应该是某个值   远远少于1)在DisMax查询中用作决胜局。

     

当针对多个字段测试来自用户输入的术语时,   多个字段可能匹配。如果是这样,每个字段将生成一个   根据该字段在该字段中的常见程度而得出的不同分数(for   每个文件相对于所有其他文件)。

     

tie参数允许   您可以控制查询的最终得分将受到多大影响   通过较低得分领域的得分与最高得分相比较   得分领域。

     
      
  • 值“ 0.0 ” - 默认值 - 使查询成为纯粹的“析取”   最大查询“:也就是说,只有最大得分子查询有助于   最后的分数。

  •   
  • 值“ 1.0 ”会使查询变为纯粹的“析取”   总和查询“哪里最大得分子查询无关紧要   是,因为最终得分将是子查询得分的总和。   通常,较低的值(例如0.1)很有用。

  •