我正在使用 Solr 版本 4(api spring data solr 来索引、获取...文档),我必须决定应用哪种策略来索引我的文档。
我在两种策略之间犹豫:
定期启动批处理以索引所有文档
仅在文档发生更改时才索引该文档
哪种策略最好?也许是混合??或其他.. 我对每种方法的优缺点都有一些想法,但我对 solr 没有丰富的经验。
最佳答案
取决于为所有文档建立索引需要多长时间以及您希望索引更新的时间。
我们有几个 Solr 核心 - 有些核心有不到 100K 的非常小的文档,并且通过数据导入处理程序(optimize=true)的完全导入运行时间不到 1 分钟。我们可以容忍最多 15 分钟的延迟,因此我们每 15 分钟对此核心运行一次完整导入。
另一个极端是核心,有数百万个文档,每个文档的大小都相当大,完整的索引需要几个小时才能完成。对于这样的核心,我们在 MySQL 中有一个更改日志表,它仅记录更改的文档,并且我们每隔几分钟仅对这些文档进行增量索引。
最后,中间有一些核心,拥有大约 500K 大小合适的文档,但在这些核心上,我们需要每 5 到 10 分钟对某些字段进行原子更新,并每隔几分钟对某些文档进行完整文档更新。我们为这些进行增量进口。完整索引本身需要大约 1.5 到 2 小时来运行,我们每晚都会这样做。
因此,您问题的答案实际上取决于您的要求。
关于solr - 使用 Solr 索引文档的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22117971/