我正在努力对重建索引过程进行一些改进。因此,我们有自定义逻辑来确定哪些文档已被修改并需要重新编制索引。所以最后我可以生成删除查询,例如删除列表中的fieldId所有文档
因此,我们每次只重新索引一小部分文件,而不是删除和添加50k文档。
现在我正在考虑边缘情况,其中我的fieldIds列表非常大,比如说30-40,000个ID,所以如果是这样的话,我应该担心请求长度的上限,否则会导致负面对性能的影响,加剧了情况,而不是让它变得更好。 我在google上阅读了一些文章,他们建议将其作为邮寄请求 我正在使用SolrNet构建的SolrNet最新版本
答案 0 :(得分:0)
我会重新审视这个逻辑,因为删除文档然后再重新索引它们并不是最好的解决方案。因为首先它是一个昂贵的操作,其次你的索引将是空的或完整一段时间,直到你再次索引文档,这意味着如果你在操作的中间查询索引,你可以得到零或部分结果
我建议再次使用相同的文档Id(solr schema.xml中定义的uniquekey)进行索引。如果使用相同的Id索引,solr很容易覆盖文档。那么你不必担心删除旧文件的麻烦。你也可能会做出优化'到索引不时去物理上删除'删除'文档。