Elasticsearch在多个索引上打分:dfs_query_then_fetch返回与query_then_fetch相同的分数

我在 Elasticsearch 中有多个索引(以及使用 django-elasticsearch-dsl 创建的 Django 中的相应文档)。所有索引都具有以下设置:

    settings = {'number_of_shards': 1,
                'number_of_replicas': 0}

现在,我正在尝试对所有 10 个索引执行搜索。为了检索来自不同索引的结果之间的一致评分,我使用dfs_query_then_fetch

search = Search(index=['mov*'])
search = search.params(search_type='dfs_query_then_fetch')
objects = search.query("multi_match", query='Tom & Jerry', fields=['title', 'actors'])

由于得分不一致,我得到了糟糕的结果。一个索引中名为“杰瑞和他的朋友汤姆故事”的书的排名可能高于另一个索引中的卡通片“汤姆和杰瑞”。原因是dfs_query_then_fetch不起作用。当我删除它或用简单的query_then_fetch替换它时,我得到了完全相同的结果和相同的评分。

我也在 URI 请求上对其进行了测试,对于两种搜索类型,我总是得到相同的分数。

原因是什么?

更新:结果实际上并不相同,但它们确实略有不同,例如,使用 dfs 的分数为 50.1,不使用 dfs 的分数为 50.0,而一个索引中的相同模型的分数为 80.0。

以上是Elasticsearch在多个索引上打分:dfs_query_then_fetch返回与query_then_fetch相同的分数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>