【问题标题】:Compare Elasticsearch query score across multiple queries比较多个查询的 Elasticsearch 查询分数
【发布时间】:2017-05-23 22:47:24
【问题描述】:

我正在尝试查询和比较两个 MLT 查询分数,但根据我在此处阅读的内容有点困惑 https://www.elastic.co/guide/en/elasticsearch/guide/current/practical-scoring-function.html

即使查询规范的目的是从 不同的查询比较,效果不是很好。唯一的 相关性_score的目的是对当前的结果进行排序 以正确的顺序查询。 您不应该尝试比较 来自不同查询的相关性得分

如果我运行 MLT 查询并且文档“A”与文档“B”相似并且得分为 0.4,反之亦然, 运行 MLT 查询文档“B”与文档“A”相似,其得分为 2.4。

根据 MLT 中匹配的标记,我希望分数相同,但事实并非如此。

另外, 如果我运行 MLT 查询并且文档“A”类似于文档“B”并且得分为 0.6 并且 运行另一个 MLT 查询文档“C”与文档“A”相似,其得分为 4.7。

所以我的问题是:

  1. 这是否意味着 C 与 A 比 B 更相似?
  2. 另外,当分数不同时,我比较弹性搜索中的多个查询的最佳方法是什么?

谢谢, - 菲尔

【问题讨论】:

    标签: elasticsearch lucene


    【解决方案1】:

    1.

    不,它没有。正如您在问题中指出的那样,您不应该比较不同查询的分数。如果你想得到一个有意义的结果,哪些文档与 C 最相似,你应该为文档 C 生成一个 MLT 查询,并用它进行搜索。

    由于 MLT 查询的工作方式,这一点变得更加真实。 MLT 尝试生成要从您的文档中搜索的有趣术语列表(基于索引中的术语库),并搜索它们。从文档 A 生成的术语集可能与从文档 B 生成的术语集有很大不同,因此从 B 中找到 A 时的分数大不相同,反之亦然,即使文档本身显然具有相同的重叠。

    2.

    不要。听文档。分数用于对文档与生成它们的查询的匹配程度进行排名。在该上下文之外使用它们是没有意义的。重新考虑您要完成的工作。

    【讨论】:

      猜你喜欢
      • 2019-10-25
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多