前面的几篇博客已经介绍了solrIndexSearcher的cache,warm,listener,其实还有其他的很多的配置,这个博客就是将这些。先声明一下,我的solr是5.5.3.
在solrCOnfig.xml中的<query></query>下的配置都是和SolrIndexSearcher相关的,上一个博客中的<listener>就是在<query>中的。我们看一下在solrconfig.xml中还有那些配置:
<query> <listener event="newSearcher" class="com.comall.solr.listener.HelloWordListener"> 这个是配置的监听器 <arr name="sortFields"> <!-- arr是arraylist --> <str>title</str> <str>id</str> </arr> <!--str是字符串--> <str name="queryKeyFile">/Users/yzygenuine/56workspace/solr_jetty/solr/extConf/query.txt</str> <arr name="queries"> <lst> <!--lst是一个NamedList org.apache.solr.common.util.NamedList--> <str name="q">solr</str> <str name="qt">standard</str> <str name="sort">price desc</str> </lst> </arr> </listener> <!--booleanQuery的最大的clause的个数,这个是对于整个jvm中的修改--> <maxBooleanClauses>1024</maxBooleanClauses> <!--之前说的filterCache--> <filterCache class="solr.FastLRUCache" size="512" initialSize="512" autowarmCount="0"/> <!--之前说的QueryResultCache--> <queryResultCache class="solr.LRUCache"size="512" initialSize="512" autowarmCount="0"/> <!--之前说的--> <documentCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0"/> <!-- 用户自定义的cache,在SolrIndexSearcher中的getCache(String)就是从这个cache中查找,这个是可以配置多个的,在solrConfig的构造方法中可以发现,对多个的配置封装为一个数组 --> <cache name="perSegFilter" class="solr.search.LRUCache" size="10" initialSize="0" autowarmCount="10" regenerator="solr.NoOpRegenerator" /> <!-- 对于那些还没有在DocumentCache中缓存的doc是否懒加载,优先选择true --> <enableLazyFieldLoading>true</enableLazyFieldLoading> <!-- 这个表示最小的查询数量:因为要对查询结果缓存,这个表示要从索引中查找的最小的doc的数量,他的使用在org.apache.solr.search.SolrIndexSearcher.getDocListC(QueryResult, QueryCommand)方法中 --> <queryResultWindowSize>20</queryResultWindowSize> <!-- 在queryResultCache中对于一个queryKey可以缓存最大的doc的数量,如果一次查询的请求的数量太大,则不进行缓存。这个可以针对业务需求进行调整,尤其是分页查询的时候 --> <queryResultMaxDocsCached>200</queryResultMaxDocsCached> <!-- 对于一个没有预热的SolrIndexSearcher是否允许其注册为供服务使用的searcher,他的使用为org.apache.solr.core.SolrCore.getSearcher(boolean, boolean, Future[], boolean), 如果当前没有供服务使用的searcher,如果可以使用不预热的searcher的话就会将这个没有预热的searcher进行注册,如果不可以,则要预热--> <useColdSearcher>false</useColdSearcher> <!-- 这个值表示后台预热的searcher的最大数量,如果有超过这个值的searcher,那么再commit的时候就会报错,也就是如果有多个commit同时发生就会报错。他的使用在org.apache.solr.core.SolrCore.getSearcher(boolean, boolean, Future[], boolean)中。 Recommend values of 1-2 for read-only slaves, higher for masters w/o cache warming. --> <maxWarmingSearchers>2</maxWarmingSearchers> </query>