顾名思义,
solrconfig.xml主要是配置跟自身相关的参数,比如:
这个配置文件位于每个collection的conf/中,在server/solr/configsets/目录下有一些例子可以参考。
${propertyname[:option default value]}
冒号后面的是缺省值,冒号前面的值可以来自于:
<lib/>标签:
<requestHandler/>标签:
例子:
<requestHandler name="
/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="defType">edismax</str>
<int name="rows">10</int>
</lst>
</requestHandler>
几种常用的Request Handler
例子:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
<initParams/>标签:
例子(配置一个缺省的df):
<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
<lst name="defaults">
<str name="df">_text_</str>
</lst>
</initParams>
如果配置name,在<requestHander>中引用的例子:
<requestHandler name="/dump1" class="DumpRequestHandler"
initParams="myParams"/>
<updateHandler/>标签:
-
@H_403_9@用途:定义一些更新索引相关的参数,比如定义commit的时机
@H_403_9@主要参数:
-
@H_403_9@autoCommit:定义自动commit的触发条件。如果没配置这个参数,则每次都必须手动commit
-
@H_403_9@maxDocs
@H_403_9@maxTime(毫秒)
@H_403_9@openSearcher:autoCommit结束后,是否开启一个新的searcher让更改生效。缺省为false
-
@H_403_9@event:监听哪个事件,比如:event="postCommit",event="postOptimize"
@H_403_9@class:处理的类,可以是自己的实现类。如果是RunExecutableListener,可以配置下面的参数:
注:commit和softCommit:
<query/>标签:
-
@H_403_9@用途:配置Solr如何处理和返回搜索的相关参数
@H_403_9@主要参数:
-
@H_403_9@filterCache:当搜索带有“fq”参数时,使用这个配置,它保存未经过排序的所有文档
-
@H_403_9@class:实现类,有三种:solr.search.LRUCache,solr.search.FastLRUCache,solr.search.LFUCache
@H_403_9@size:最大保存的记录数量
@H_403_9@initialSize:初始数量
@H_403_9@autowarmCount:新Index Searcher启动的时候从旧的Index Searcher缓存拷贝过来的数据量
-
@H_403_9@class:实现类,有三种:solr.search.LRUCache,solr.search.LFUCache
@H_403_9@size:最大保存的记录数量
@H_403_9@initialSize:初始数量
@H_403_9@autowarmCount:新Index Searcher启动的时候从旧的Index Searcher缓存拷贝过来的数据量
@H_403_9@maxRamMB:最大分配的容量(兆)
-
@H_403_9@class:实现类,有三种:solr.search.LRUCache,solr.search.LFUCache
@H_403_9@size:最大保存的记录数量
@H_403_9@initialSize:初始数量
@H_403_9@autowarmCount:因为Lucene的内部文档 id 是临时的,所以这个缓存不应该被auto-warm,这个值应该为“0”
<requestDispatcher/>标签:
-
@H_403_9@用途:控制Solr HTTP RequestDispatche r响应请求的方式,比如:是否处理/select url、是否支持对流的处理、上传文件的大小、如何处理带有cache头的HTTP请求、等等
@H_403_9@主要参数:
-
@H_403_9@handleSelect:true/false,如果是false,则由requestHandler来处理/select请求。因为现在的requestHandler中/select是标配,所以这里应该填false
@H_403_9@requestParsers:
-
@H_403_9@enableRemoteStreaming:是否接受流格式的内容,缺省为ture
@H_403_9@multipartUploadLimitInKB:multi-part POST请求,上传文件的大小上限(K)
@H_403_9@formdataUploadLimitInKB:HTTP POST的form data大小上限(K)
@H_403_9@addHttpRequestToContext:原始的HttpServletRequest对象是否应该被包含在SolrQueryRequest的httpRequest中……一般自定义的插件使用这个参数……
<updateProcessor/>和<updateProcessorChain/>标签:
-
@H_403_9@用途:配置处理update请求的处理器、处理器链。如果不配置的话,Solr会使用缺省的三个处理器:
-
@H_403_9@LogUpdateProcessorFactory:追踪和记录日志
@H_403_9@DistributedUpdateProcessorFactory:分流update请求到不同的node,比如SolrCloud的情况下把请求分配给一个shard的leader,然后把更新应用到所有replica中
@H_403_9@RunUpdateProcessorFactory:调用Solr的内部API执行update操作
相关名词:
-
@H_403_9@Solr缓存:跟整个Index Searcher的生命周期对应,没有超时被清理掉的机制,只会在容量满了的时候被清理
@H_403_9@Index Searcher:负责处理搜索。当一个新的searcher启动的时候会从当前searcher拷贝缓存数据(warming),当前searcher的结束条件:它正在处理的request已经完成、缓存拷贝已经完成
@H_403_9@LRU缓存:清理缓存的时候,优先清理掉最近不用的那些数据(Least Recently Used)
@H_403_9@LFU缓存:清理缓存的时候,优先清理掉使用次数最少的那些数据(Least Frequently Used)