我们手头有以下问题。我们希望在此过程中执行完全重新索引,并提供100%的可读性。从索引中删除旧文档时出现问题。此刻我们正在做某事。像这样:
1) fetch all data from db and update solr index per solrServer.add()
2) get all document ids that were updated and compare them with all the document ids in index
3) delete all documents that are in index but weren´t updated
这似乎有效但是这个任务可能有更好/更简单的解决方案吗?
答案 0 :(得分:2)
在您提交之前,更改不会显示。因此,您可以发出删除然后索引所有文档。只是确保自动提交不存在。这显然需要更多的记忆。
或者,您可以使用世代标记执行单独的字段(例如,增加ID或时间戳)。然后,您发出查询删除以获取旧代的左侧文档。
最后,您可以索引到新的Core / Collection,然后将有效集合换成指向新的集合。然后,您可以删除旧的收集目录。
答案 1 :(得分:0)
听起来您可能会遇到删除操作的性能问题。如果你这样做:
删除ID:12345 删除id:23456 删除id:13254
然后它比这慢很多:删除ID:(12345 OR 23456 OR 13254)
收集需要删除的ID列表,将它们以100个左右的组进行批处理,然后使用括号和OR将这些批处理转换为删除查询。我已经完成了批量删除数千次的删除操作,并且比单步执行一次删除要快得多。