簡體   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