Solr 'explain' 值与 Solr 分数有何不同以及为何不同?

How and why do Solr 'explain' values differ from the Solr score?

在使用 'debugQuery=on,' 调试从 Solr 返回的分数时,我发现 'explain' 部分中的顶级值不一定与我看到的生成的分数匹配Solr.

例如,这里是两个文档的顶级调试信息:

114628: Object
  description: "sum of:"
  details: Array[2]
  match: true
  value: 20.542768

357547: Object
  description: "sum of:"
  details: Array[2]
  match: true
  value: 26.517654

但是他们有分数:

114628: 20.542767
357547: 13.258826

我希望第二个文档与我的查询最相关,并且调试值似乎一致。但是,在我收到的最终分数中,该文档的分数已被下调。

Why/how调试值和我看到的最终分数有区别吗?有没有办法获得我期望的行为?

我的 collection.

中的核心优化后似乎解决了这个问题

所有差异的调试分数似乎都正好减半。我猜这是由于我的 Solr Cloud collection 有两个分片在两个节点之间复制的问题。

可能是没有减半的分数使用了 IDF 因子,该因子仅使用节点或分片之一中的文档计算得出。然而,正确的值出现在调试结果中而不是最终得分仍然很奇怪。

EDIT 这似乎只解决了那个案例的问题。我偶尔会在备用查询中看到同样的问题。现在所有受影响的分数正好是其调试分数的 1/4。

编辑 2 这已被确定为 Lucene 中的错误。问题可以在这里找到:https://issues.apache.org/jira/browse/LUCENE-7132

解决此问题之前的解决方法是在 schema.xml.

中使用 BM25 相似度
<similarity class="solr.BM25SimilarityFactory"/>