在使用'debugQuery = on'调试Solr返回的分数时,我发现'explain'部分中的顶级值不一定与我看到的Solr生成的分数相符。 / p>
例如,以下是两个文档的顶级调试信息:
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
我希望第二个文档与我的查询最相关,调试值似乎同意。但是,在我收到的最终分数中,该文档的分数已经调低了。
为什么/调试值与我看到的最终分数有何不同?有没有办法得到我期望的行为?
答案 0 :(得分:0)
在优化集合中的核心后,这似乎得到了解决。
所有差异似乎都使他们的调试分数完全减半。我猜这是因为我的Solr Cloud集合存在两个分片在两个节点上复制的问题。
可能是没有减半的分数是使用仅使用其中一个节点或分片中的文档计算的IDF因子。然而,在调试结果中出现正确的值而不是最终得分仍然很奇怪。
编辑这似乎只解决了这个问题。我偶尔会在备用查询中看到同样的问题。现在,所有受影响的分数恰好是其调试分数的1/4。
击>
编辑2 这已被确定为Lucene中的错误。问题可以在这里找到:https://issues.apache.org/jira/browse/LUCENE-7132
解决此问题之前的解决方法是在schema.xml中使用BM25相似性。
<similarity class="solr.BM25SimilarityFactory"/>