我正在使用solrClient.add(SolrInputDocument doc)
方法將文檔逐個添加到我的solr
。在此之後solrj:添加後需要提交expicit嗎?
我明確要求solrClient.commit()
需要它? ,我看過一些add
方法,它們指定delay
爲commit
。 這是什麼意思,簡單的add
方法沒有提交,或者如果確實,在多長時間之後?
我正在使用solrClient.add(SolrInputDocument doc)
方法將文檔逐個添加到我的solr
。在此之後solrj:添加後需要提交expicit嗎?
我明確要求solrClient.commit()
需要它? ,我看過一些add
方法,它們指定delay
爲commit
。 這是什麼意思,簡單的add
方法沒有提交,或者如果確實,在多長時間之後?
Solr中,我們主要有兩種不同類型的承諾:
硬提交:這是由自動提交 solrconfig.xml中或顯式調用從客戶端(通過選項SolrJ或HTTP管轄瀏覽器,cURL或類似的)。硬提交截斷當前段 並在索引中打開一個新段。 openSearcher:一個布爾型的 子屬性,用於管理新提交的 數據是否對後續搜索可見。
軟承諾:比hard-commit(openSearcher = true)更便宜的操作,它還使文檔可以被搜索。
以上文字摘自this來源,您可以在此找到更多信息。
添加文檔時,只有在發生上述其中一個提交時纔會提交。 您可以檢查solrconfig.xml提交選項的默認值是什麼。 通常情況下,我希望你根據你的應用程序需要調整硬性和軟性的提交時間,而不是從你的代碼中調用一個明確的提交,除非你需要將條目直接寫在磁盤上。
更具體地講,如果你爲了包括以下列方式柔軟hardcommit設置更改solrconfig.xml中:
<!-- AutoCommit
Perform a hard commit automatically under certain conditions.
Instead of enabling autoCommit, consider using "commitWithin"
when adding documents.
http://wiki.apache.org/solr/UpdateXmlMessages
maxDocs - Maximum number of documents to add since the last
commit before automatically triggering a new commit.
maxTime - Maximum amount of time in ms that is allowed to pass
since a document was added before automatically
triggering a new commit.
openSearcher - if false, the commit causes recent index changes
to be flushed to stable storage, but does not cause a new
searcher to be opened to make those changes visible.
If the updateLog is enabled, then it's highly recommended to
have some sort of hard autoCommit to limit the log size.
-->
<autoCommit>
<maxTime>600000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
<!-- softAutoCommit is like autoCommit except it causes a
'soft' commit which only ensures that changes are visible
but does not ensure that data is synced to disk. This is
faster and more near-realtime friendly than a hard commit.
-->
<autoSoftCommit>
<maxTime>30000</maxTime>
</autoSoftCommit>
的Solr會自動運行softCommit每隔30秒,這將使您的文檔搜索可見並且每10分鐘進行一次艱苦的提交。 所以,無論你SolrJ添加使用:
solrClient.add(SolrInputDocument doc)
將在30秒後軟致力於分鐘和10分鐘,而無需任何solrClient.commit()調用後難犯。
你能解釋一下這個問題嗎? – gaurav5430