繁体   English   中英

选择Solr / Lucene提交策略

[英]Choosing a solr/lucene commit strategy

我有120k db记录要提交到Solr索引中。

我的问题是:我应该在提交每10k条记录后提交,还是在提交所有12万条记录后提交一次?

这两种选择之间有什么区别吗?

使用Solr的默认自动提交值,我认为这是非常合理的。 如果没有,您可以调整它们以适合您的需求:

<!-- autocommit pending docs if certain criteria are met.  Future versions may expand the available
 criteria -->
<autoCommit>
  <maxDocs>10000</maxDocs> <!-- maximum uncommited docs before autocommit triggered -->
  <maxTime>50000</maxTime> <!-- maximum time (in MS) after adding a doc before an autocommit is triggered -->
</autoCommit>

这意味着当有超过10000个文档等待提交时,或者自添加文档以来已经过去了50秒钟,它将提交。

推荐的方法是使用commitWithin代替<autoCommit>

如果使用的是SolrJ,则几乎所有方法都有一个commitWithin参数来使用此功能。

根据Lucene 2.9.3文档 ,commit()允许读者查看添加的文档,并将所有添加/删除的文档放在磁盘的索引中。 这是一项昂贵的操作。

因此,如果要在添加其他文档的同时查看部分文档,或者要确保不会丢失添加的文档集大于10,000个文档,则需要提交每10,000条记录。

OTOH,如果您希望节省额外的提交时间,并且不怕机器故障而丢失文档,则仅在添加所有文档之后提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM