Spring Data ElasticSearch:返回的分数不对

Spring Data ElasticSearch: returned scores are off

我有一个 Spring 引导项目 org.springframework.boot:spring-boot-starter-data-elasticsearch:jar:2.0.0.RELEASE 连接到 elasticsearch-6.3.1 服务器。

我遇到以下情况:对于某些 elasticsearch 查询(涉及 should bool),我得到的分数与我 运行 使用 curl 手动查询时得到的分数不同。

我尝试过的步骤:在调用存储库之前使用 SearchQuery 中的调试器提取查询,从 elasticsearch 日志中提取查询(使用 "index.search.slowlog.threshold.fetch.debug" : "0s", "index.search.slowlog.threshold.query.debug" : "0s");在这两种情况下,运行使用 curl 手动查询给出的一组分数与 Java api.

给出的分数不同

我提到我无法通过查看两个分数集之间的差异找到规律。手动查询返回的分数似乎是正确的,因为我希望其中一些具有相同的值,而 api.

返回的分数不会发生这种情况

如果您对可能导致此问题的原因或如何继续调查有任何想法,我们将不胜感激。

我通过用 constantScoreQuery 包装内部查询,设法使 api return 与手册 运行 的得分相同,似乎 TF/IDF标准是 'culprit'.

但仍然很好奇,为什么手动查询首先表现为忽略 TF/IDF ..