首页 文章

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

提问于
浏览
1

我正在尝试查询和比较两个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 .

所以我的问题是:

  • 这是否意味着C与A比B更相似?

  • 另外,当得分不同时,对于我在弹性搜索中比较多个查询的最佳方法是什么?

谢谢, - 菲尔

1 回答

  • 2

    1 .

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

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

    2 .

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

相关问题