假设您有一个 Solr 索引,大约为: 2000 万件商品。当您为这些项目建立索引时,它们会批量添加到索引中。
所有这些项目中大约 5% 被索引两次或更多次,因此导致重复问题。
如果你检查日志,你实际上可以看到这些项目确实被添加了两次(或更多次)。通常,它们之间有 2-3 分钟的间隔,它们之间也有其他项目。
触发索引的 Web 服务器处于负载平衡环境中(2 个 Web 服务器)。但是,执行实际索引的 Web 服务器是单个 Web 服务器。
以下是 solrconfig.xml 中的一些配置元素:
<indexDefaults>
.....
<mergeFactor>10</mergeFactor>
<ramBufferSizeMB>128</ramBufferSizeMB>
<maxFieldLength>10000</maxFieldLength>
<writeLockTimeout>1000</writeLockTimeout>
<commitLockTimeout>10000</commitLockTimeout>
<mergePolicy class="org.apache.lucene.index.LogByteSizeMergePolicy">
<double name="maxMergeMB">1024.0</double>
</mergePolicy>
<mainIndex>
<useCompoundFile>false</useCompoundFile>
<ramBufferSizeMB>128</ramBufferSizeMB>
<mergeFactor>10</mergeFactor>
我使用的是 Solr 1.4.1 和 Tomcat 7.0.16。我还使用最新的 SolrNET 库。
什么可能导致此重复问题?感谢您的所有投入!
最佳答案
为了完全回答你的问题,我应该能够知道架构。架构中有一个唯一的 id 字段,其工作方式更像是数据库中的唯一键,请确保将文档的唯一标识符设为唯一键,然后重复项将被覆盖以仅保留一个值。
关于solrnet - Solr 索引中的重复项 - 添加两次或更多次的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580446/