在很多情况下,我们并不想自己主动触发COMMIT相应的XML给SOLR,这样带来很多的不便(例如频繁commit,会带来性能上较大的消耗),恰好,SOLR通过配置文件可以自行在满足指定的条件下自动的COMMIT索引,同时,让前端检索实例可以检索到最新生成的数据,而不需要人为干预。
方法很简单:找到solrConfig.xml文件
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler"> <maxPendingDeletes>10000</maxPendingDeletes> <autoCommit> <maxDocs>20</maxDocs> <maxTime>86000</maxTime> </autoCommit> </requestHandler>
上面autoCommit中的maxDocs指定的pending多少个文档后执行一次commit,而maxTime指定了多长时间间隔进行一次commit,一般这两个选项只需要配置一个即可满足需要。另外,每次commit会将最近的更新生效,但是如果一次commit操作尚未完成,又达到了下一次commit的时刻,这样做会严重影响索引的吞吐量。
在Solr 4.0将会实现一种基于“软自动提交”(soft auto commit)的功能,它会根据当前的系统上下文决定是否提交(简单的情况就是,确保每次commit完成,也就是最近的索引数据更新已经更新同步到磁盘上之后再自动执行下一次commit)
配置如下:
<autoSoftCommit> <maxTime>${solr.autoSoftCommit.maxTime:1800000}</maxTime> <maxDocs>100</maxDocs> </autoSoftCommit>