如何有效地更新较大的solr索引

如何有效地更新较大的solr索引,solr,lucene,solrj,Solr,Lucene,Solrj,我有一个更大的Solr索引大小。该索引包含300万个文档。我需要经常更新一些文档。但是每次Solr提交都需要一些时间,因为索引包含数百万个文档。每次提交都会打开一个新的搜索器。因此,第一次执行搜索需要一些时间。有没有办法以有效的方式更新文件?提前感谢。您可以检查Solr 4,这将加快索引速度。新文件一经提交即可用,但不会持久保存到索引中。您可以决定偶尔执行一次硬提交 软提交要快得多,因为它只会使索引更改可见,而不会fsync索引文件或写入新的索引描述符。如果JVM崩溃或断电,则上次硬提交后发生

我有一个更大的Solr索引大小。该索引包含300万个文档。我需要经常更新一些文档。但是每次Solr提交都需要一些时间,因为索引包含数百万个文档。每次提交都会打开一个新的搜索器。因此,第一次执行搜索需要一些时间。有没有办法以有效的方式更新文件?提前感谢。

您可以检查Solr 4,这将加快索引速度。新文件一经提交即可用,但不会持久保存到索引中。您可以决定偶尔执行一次硬提交

软提交要快得多,因为它只会使索引更改可见,而不会fsync索引文件或写入新的索引描述符。如果JVM崩溃或断电,则上次硬提交后发生的更改将丢失。具有近实时要求(希望索引更改对搜索快速可见)的搜索集合将希望经常软提交,但不希望经常硬提交

可能可以使用事务日志执行恢复


如果丢失文档对您来说是一个问题,您可以为Solr配置主从体系结构。主节点是索引发生的位置,从节点是执行搜索的位置,因此索引和提交时间不会对搜索产生太大影响。但是,会有延迟,这取决于您的提交频率。

谢谢您的回复。是的。实际上我正在使用软提交。它大约完成硬提交的1/3。但是,自从新的搜索程序将被打开以来,在提交后进行搜索所需的时间很长。我知道这就是Solr的行为。但如果有其他可用的选项,我还是会很好的。事务日志是为了在发生任何崩溃时保持状态以进行恢复。它应该处理好复苏问题。