use*_*465 5 lucene indexing solr
我们对长期索引重建期间的最佳实践/编程提出了一般性问题.这个问题不是"solr specific"也可以适用于原始Lucene或任何其他类似的索引工具/库/黑盒子.
这个问题
在长索引重建之后确保Solr/Lucene索引"绝对最新"的最佳做法是什么,即在12小时索引重建过程中,用户是否添加/更改/删除db记录或文件(PDF),你如何确保最后的重建索引"包括"这些变化?
上下文
目前的方法
提议的方法
继续
谢谢
有很多方法可以给这只猫剥皮......我猜测在 core1 (又名“甲板上”核心)的漫长索引过程中,您正在针对已经填充的 core0 (又名“实时”核心)运行用户查询。
如果您可以区分发生了什么变化,为什么不直接更新实时核心呢?如果您可以对实时核心和 PDF 文件系统运行查询,以找出哪些文档已更新,哪些文档已删除,那么只需对实时核心执行所有操作,并放弃此离线过程即可。这将是最简单的......只需将 pdf 的更新时间放入 solr 文档中即可检测哪些已更改。如果 solr 中不存在该 pdf,则添加它。保留 solr 文档 ID 列表,最后,任何没有匹配 PDF 的都可以删除。与此同时,您仍然可以收到实时更新。
您可以代理传入的实时更新并复用(?)它们,以便它们同时到达 Core1 和 Core0。我构建了一个简单的代理界面,发现它非常简单。这样,您的所有更新都会发送至两个核心,并且您无需进行任何“协调”。
最后,您可以合并两个核心:http://wiki.apache.org/solr/MergingSolrIndexes#Merging_Through_CoreAdmin 我真的不知道如果您有两个具有相同 id 的文档,或者文档不存在,会发生什么在一个核心中,但在另一个核心中......我认为这都是一个附加过程,但你想深入研究这一点。
很想听听事情进展如何!