2017-01-09 63 views
0

我想查询和比较两个MLT查询分数Elasticsearch查询分数,但有点糊涂基于我所读到这里 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是更类似于一个比乙?
  2. 另外,当分数不同时,我用什么方法比较elasticsearch中的多个查询的最佳方式?

感谢, 菲尔 -

回答

1

1.

不,不。正如你在你的问题中提到的那样,你不应该比较不同查询的分数。如果您想获得哪些文档与C最为相似的有意义的结果,则应该为文档C生成MLT查询,然后使用该查询进行搜索。

由于MLT查询的工作原因,这是非常真实的。 MLT试图从您的文档中生成一个有趣的术语列表(基于索引中的术语库)并搜索它们。由文档A生成的术语集可能与文档B生成的术语集大不相同,因此,当从B发现A时,即使文档本身明显具有相同的重叠,反之亦然,得分会非常不同。

2.

不要。收听文档。得分为,只有被设计用于对文档与生成它们的查询的匹配程度进行排序。在这种背景下使用它们是没有意义的。重新思考你正在努力完成的事情。