比较多个查询中的Elasticsearch查询得分

时间:2017-01-09 16:03:56

标签: elasticsearch lucene

我正在尝试查询和比较两个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. 另外,当得分不同时,我在弹性搜索中比较多个查询的最佳方式是什么?
  3. 谢谢, - 菲尔

1 个答案:

答案 0 :(得分:2)

1

不,它没有。正如您在问题中所述,您不应该比较不同查询的分数。如果要获得与C最相似的文档的有意义结果,则应为文档C生成MLT查询,并使用该文档进行搜索。

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

2

别。听听文档。分数旨在对文档与生成它们的查询的匹配程度进行排名。在该上下文之外使用它们没有意义。重新思考你想要完​​成的事情。