我正在使用Solr Version 4(api spring data solr索引,获取......文档),我必须决定将申请哪个策略来索引我的文档。
我在两种策略之间犹豫不决:
定期启动批处理以索引所有文档
仅在此文档发生变更时对文档编制索引
哪种策略最好?也许混合??或其他.. 我对每个人的利弊都有一些想法,但我对solr没有太大的经验。
答案 0 :(得分:1)
取决于索引所有文档的索引时间以及索引更新的时间。
我们有几个Solr核心 - 一些具有少于100K的非常小的文档,并且通过数据导入处理程序(具有optimize = true)的完全导入在1分钟内运行。我们可以容忍最多15分钟的延迟,因此我们每隔15分钟对该核心进行一次完全导入。
然后在另一个极端有核心数百万个文档,每个文档都有相当大的规模,完整的索引编制需要几个小时才能完成。对于这样的核心,我们在MySQL中有一个changelog表,它只记录更改的文档,我们只为每隔几分钟的文档进行一次增量索引。
最后,有一些核心位于中间,大约有500K文档,但是对于某些领域我们需要每5到10分钟进行一次原子更新,并且每隔几分钟就需要对某些文档进行完整的文档更新。我们为这些进行delta进口。完整索引本身需要大约1.5到2个小时才能运行,我们每晚都会这样做。
因此,您问题的答案实际上取决于您的要求。