[英]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.