【问题标题】:Solr relevancy score different on replicated nodesSolr 相关性分数在复制节点上不同
【发布时间】:2019-01-04 09:22:30
【问题描述】:

版本 Solr 7.4.0 zookeeper 3.4.11 结构 两个盒子 Machine-1,Machine-2 持有 solr 的单个实例

我们有一个单一分片和单一副本的集合,即 s=1 和 rf=1

几天前我们尝试向它添加副本。但是相同查询的分数来自不同的副本。

http://Machine-1:8983/solr/MyTestCollection/select?q=%22data%22+OR+(data)&rows=10&fl=score&defType=edismax&qf=search_field+content&wt=json

"response":{"numFound":5836,"start":0,"maxScore":4.418847,"docs":[

而在另一台机器上(副本)

http://Machine-2:8983/solr/MyTestCollection/select?q=%22data%22+OR+(data)&rows=10&fl=score&defType=edismax&qf=search_field+content&wt=json

"response":{"numFound":5836,"start":0,"maxScore":4.4952264,"docs":[

maxScore 不同。

由于分片,相关性受到影响,但由于相同的文档被复制到其他节点,因此预计不会复制。分数解释给出了 docCount 和 docFreq 不均匀的问题。

idf,计算为 log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) 来自: 1.050635000 文档计数:10020.000000000 docFreq :3504.0000000

idf,计算为 log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) 来自: 1.068795100

文档计数:10291.000000000 docFreq :3534.0000000

更新:在不同的集合上尝试相同。两个实例给出相同的分数。似乎是特定集合的问题。

我们怎样才能纠正原来的集合。

【问题讨论】:

  • 初步猜测 - 两个副本上已删除文档的数量不同(它们仍然会影响分数,直到它们被删除)。它们的合并因子可能不同,或者在索引时无法将文档提交到其中一个副本 - 并且取决于提交文档时的设置 - 这可能不会作为致命错误传播。删除副本并再次添加它应该会再次强制复制完整的索引。向所有副本发出 fetch all 查询,查看文档数是否不同(因为 docCount 不同)
  • machine-1:8983/solr/MyTestCollection/select?q=*:*&rows=0 machine-2:8983/solr/MyTestCollection/select?q=*:*&rows=0 machine-1:8983/solr/MyTestCollection/select?q=*:*&shards=machine-2:8983/solr/MyTestCollection 全部提供相同数量的文档。我们可以删除副本,但应该删除哪个副本。我们如何知道哪个节点给出了正确的分数。
  • "shards"下的集合状态:{"shard1":{"range":"80000000-7fffffff","state":"active","re​​plicas":{"core_node2":{" core":"MyTestCollection_shard1_replica_n1","base_url":"machine-1.com:8983/…", "type":"NRT","force_set_state":"false","leader":"true"},"core_node4":{"core" :"MyTestCollection_shard1_replica_n3","base_url":"machine-2:8983/…", "force_set_state":"false"}}}},

标签: solr solrcloud


【解决方案1】:

如果您在进行索引时执行此操作,则主服务器的文档可能比副本多(副本落后,总是在追赶),因此文档编号可能会略有不同。如果你在没有索引的情况下得到这个,并且你已经提交了,那么它应该是一个错误。

【讨论】:

  • 我们在索引期间没有这样做。我们也在不同的集合上尝试了相同的操作。两个实例给出相同的分数。似乎是特定集合的问题。
  • 你确定两个副本都提交了所有文档?如果他们有不同的提交设置,他们可能会有所不同
猜你喜欢
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多