爲什麼要使用軟提交
以前程序向solr中提交索引時,每次addBean後都執行1次commit操作。
client.addBean(obj);
client.commit();
這樣極其耗費資源平均提交時長爲600毫秒,所以改用其他提交方式
在solrconfig.xml中加入如下配置
<autoCommit>
<maxTime>20000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
<autoSoftCommit>
<maxTime>5000</maxTime>
</autoSoftCommit>
配置了autoCommit,爲什麼還要配置autoSoftCommit???
其實單獨配置autoCommit是可以的,但是其參數openSearcher=false的話,程序提交的索引會寫入硬盤(好處是數據不會丟失),但是新加入的數據不會被搜索到,只有solr被重啓或openSearcher=true時纔可以被搜索到。
那爲什麼要把autoCommit的openSearcher設置爲false呢???
在autoCommit裏設置了文檔每隔20000ms就去做一次硬提交,openSearcher屬性設置是否每一次硬提交都開啓一個新的Searcher,由於開啓Searcher也是昂貴的操作,推薦不要開啓,可以通過配合下面的autoSoftCommit來實現快速檢索到提交的問題。
autoSoftCommit裏設置了5000ms做一個軟提交,配置了autoSoftCommit的話新加入的數據,就可以被檢索到了