【发布时间】:2017-04-21 14:09:51
【问题描述】:
在 solr 云中的得分是在分片中计算的。
我有一个集合和两个碎片。我在 shard1 中有 110 个文档,在 shard 2 中有 90 个文档匹配字段名称:John
文档的 solr 评分因分片而异,我需要 solr 来计算整体集合中的文档而不是分片和合并中的分数。
例如:搜索 John 返回 2 条完全匹配的记录,分数分别为 3.2 和 2.2 。有没有办法根据集合而不是分片进行评分
【问题讨论】:
在 solr 云中的得分是在分片中计算的。
我有一个集合和两个碎片。我在 shard1 中有 110 个文档,在 shard 2 中有 90 个文档匹配字段名称:John
文档的 solr 评分因分片而异,我需要 solr 来计算整体集合中的文档而不是分片和合并中的分数。
例如:搜索 John 返回 2 条完全匹配的记录,分数分别为 3.2 和 2.2 。有没有办法根据集合而不是分片进行评分
【问题讨论】:
你必须像这样在你的 solrconfig.xml 中启用ExactStatsCache:
<statsCache class="org.apache.solr.search.stats.ExactStatsCache"/>
默认情况下,Solr 仅使用本地统计信息,这将使 Solr 使用全局统计信息进行评分,应该可以解决您的问题。
【讨论】:
您对分布式 IDF [1] 感兴趣。 这将允许您基于相同的 IDF 跨不同分片对文档进行精确评分。
请记住,即使在这种情况下,“完全匹配的文档”也可能有不同的分数: 1)不同的字段长度 2) 所涉及术语的不同术语频率 3) 不同的提升(如果适用)
干杯 [1]https://cwiki.apache.org/confluence/display/solr/Distributed+Requests
【讨论】: