【问题标题】:Solr - Change how score is calculated? (Sum instead of Max)Solr - 改变分数的计算方式? (总和而不是最大值)
【发布时间】:2018-11-14 05:45:35
【问题描述】:

我们遇到了一些与 Solr 结果相关的问题。在这个特定的示例中,产品 A 显示在产品 B 上方。产品 A 的标题包含搜索词。产品 B 的标题还包含搜索词及其描述和类别名称。所以从逻辑上讲,产品 B 应该更相关并出现在产品 A 之上,但事实并非如此。

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

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

【问题讨论】:

  • 你在使用 dismax 查询解析器吗?如果是这样,您可以将tie 参数设置为1.0,以便可以应用析取求和查询。
  • 请提供您正在运行的查询
  • @EricLavault 它使用 edismax。 tie 参数正是我想要的。我不知道那个。仍有一些其他问题,但这个特定问题已解决。谢谢!
  • @Reddy 好的,我只是把它写下来作为答案。

标签: solr relevance


【解决方案1】:

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

Solr 文档解释得很好:

tie (Tie Breaker) parameter

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

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

tie 参数让 您控制查询的最终分数将受到多少影响 通过与最高评分相比,较低评分字段的分数 评分字段。

  • 值“0.0” - 默认值 - 使查询成为纯“析取” max query":即只有最大得分的子查询有助于 最终得分。

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

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多