为什么要使用软提交
以前程序向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的话新加入的数据,就可以被检索到了