我们与Solr结果存在一些相关性问题。在此特定示例中,我们将产品A显示在产品B之上。产品A的标题包含搜索词。产品B的标题还包含搜索字词及其描述和类别名称。因此,从逻辑上讲,产品B应该更具相关性并且出现在产品A之上,但它不会。
架构配置为考虑所有这些额外字段。在使用...&debugQuery=true&debug.explain.structured=true
分析查询的调试信息后,两个产品似乎都达到了相同的分数。进一步看,我可以看到这些额外的字段有分数计算,但由于某种原因,解析器只取这些分数的最大值而不是导致它相同的总和:
Solr是否有这样的行为?有没有办法改变这种行为来使用总和而不是最大值? (就像图像中的父元素一样)
答案 0 :(得分:2)
如果您使用的是Dismax / eDismax查询解析器,则可以使用 tie
参数控制分数的计算方式。
Solr文档解释得非常好:
tie参数指定一个浮点值(应该是某个值 远远少于1)在DisMax查询中用作决胜局。
当针对多个字段测试来自用户输入的术语时, 多个字段可能匹配。如果是这样,每个字段将生成一个 根据该字段在该字段中的常见程度而得出的不同分数(for 每个文件相对于所有其他文件)。
tie参数允许 您可以控制查询的最终得分将受到多大影响 通过较低得分领域的得分与最高得分相比较 得分领域。
值“ 0.0 ” - 默认值 - 使查询成为纯粹的“析取” 最大查询“:也就是说,只有最大得分子查询有助于 最后的分数。
值“ 1.0 ”会使查询变为纯粹的“析取” 总和查询“哪里最大得分子查询无关紧要 是,因为最终得分将是子查询得分的总和。 通常,较低的值(例如0.1)很有用。