Solr 配置文件之solrconfig.xml

前端之家收集整理的这篇文章主要介绍了Solr 配置文件之solrconfig.xml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
顾名思义, solrconfig.xml主要是配置跟自身相关的参数,比如:
    @H_403_9@为建索引和搜索等请求配置Request Handler @H_403_9@为某些事件配置listener,以触发执行某些代码 @H_403_9@为HTTP请求配置Request Dispatcher @H_403_9@配置Admin Web @H_403_9@为分布式的复制配置相关的参数

这个配置文件位于每个collection的conf/中,在server/solr/configsets/目录下有一些例子可以参考。

solrconfig.xml配置文件支持使用变量,格式如下:
${propertyname[:option default value]}
冒号后面的是缺省值,冒号前面的值可以来自于:
    @H_403_9@JVM的-D参数,比如:bin/solr start -Dpropertyname=none @H_403_9@.properties等配置文件,比如solrcore.properties、core.properties等文件

<lib/>标签
    @H_403_9@用途:配置插件的jar包,比如指定中文分词器jar包的位置 @H_403_9@注意事项:被依赖的包配置在前面

<requestHandler/>标签
    @H_403_9@用途:配置Solr处理各种请求(搜索/select、更新索引/update、等)的各种参数 @H_403_9@主要参数:
      @H_403_9@name:作为HTTP请求路径的一部分,比如:http://localhost:8983/solr/gettingstarted/select?q=solr @H_403_9@class:处理请求的类 @H_403_9@initParams:可选。引用<initParams>标签中的配置
      @H_403_9@<lst name="defaults">:定义各种缺省的配置,比如缺省的parser、缺省返回条数

例子:
<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
    @H_403_9@SearchHandlers:用于处理搜索请求 @H_403_9@UpdateRequestHandlers:用于更新索引 @H_403_9@DataImportHandlers:用于从数据库导入数据

例子:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

<initParams/>标签
    @H_403_9@用途:为一些requestHandlers定义通用的配置,以便在一个地方修改后,所有地方都生效 @H_403_9@主要参数:
      @H_403_9@path:指明该配置应用于哪些请求路径,多个 的话用逗号分开,可以用通配符(*表示一层子路径,**表示无限层) @H_403_9@name:如果不指定path,可以指定一个name,然后在<requestHander>配置中可以引用这个name
例子(配置一个缺省的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@autoSoftCommit:定义自动softCommit的触发条件。相关参数同autoCommit @H_403_9@listener:配置事件监听器
        @H_403_9@event:监听哪个事件,比如:event="postCommit",event="postOptimize" @H_403_9@class:处理的类,可以是自己的实现类。如果是RunExecutableListener,可以配置下面的参数:
          @H_403_9@exe:可执行文件包括Solr Home的相对路径和文件名 @H_403_9@dir:工作目录,缺省是“.” @H_403_9@wait: 调用者是否等待可执行文件执行结束,缺省是true @H_403_9@args:传递给可执行文件的参数 @H_403_9@env:其他所需要的环境变量
      @H_403_9@updateLog:配置log的保存路径、等
        @H_403_9@dir:保存路径 @H_403_9@numRecordsToKeep:一个log保存的记录数,缺省为100 @H_403_9@maxNumLogsToKeep:log的数量,缺省为10 @H_403_9@numVersionBuckets:追踪max version的bucket数量(?),缺省为65535

配置这些参数要考虑到搜索的准确度和性能的平衡。^_^

注:commit和softCommit:
    @H_403_9@commit:正式提交、对索引的修改会被保存到永久存储中(比如磁盘),会比较耗时 @H_403_9@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@queryResultCache:存储最终的搜索结果(排序后的、有范围的文档id)
        @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@documentCache:缓存Lucene Document对象(就是每个文档的fields)
        @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”
      @H_403_9@cache:配置自定义的缓存,通过SolrIndexSearcher类的getCache()方法和name参数调用这个缓存
        @H_403_9@name:被调用时的标识 @H_403_9@其他参数同上
      @H_403_9@maxBooleanClauses:BooleanQuery的最大子句数量 @H_403_9@enableLazyFieldLoading:没有知道被请求的field是否懒加载,true/false @H_403_9@useFilterForSortedQuery:如果不是按照score排序,是否从filterCache中获取数据 @H_403_9@queryResultWindowSize:配合queryResultCache使用,缓存一个超集。如果搜索请求第10到19条记录,而这个参数是50,那么会缓存0到49条记录 @H_403_9@queryResultMaxDocsCached:queryResultCache缓存的最大文档数量 @H_403_9@useColdSearcher:但一个新searcher正在warm-up的时候,新请求是使用旧是searcher(true)还是等待新的search(false) @H_403_9@maxWarmingSearchers:定义同时在warn-up的searcher的最大数量 @H_403_9@listener:监听一些事件并指定处理的类,比如在solr启动时加载一些数据到缓存中,相关参数:
        @H_403_9@event:被监听的事件,比如:firstSearcher是第一个searcher启动、也就是solr启动的事件,newSearcher是当已经有searcher在运行的时候有新searcher启动的事件 @H_403_9@class:处理类 @H_403_9@name:="queries"就是需要处理的是query
          @H_403_9@lst,name:针对哪些搜索条件需要处理

<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中……一般自定义插件使用这个参数……
      @H_403_9@httpCaching:如何处理带有cache control头的HTTP请求
        @H_403_9@nerver304:如果设为true(开发阶段),则就算所请求的内容没被修改,也不会返回304,并且下面两个参数会失效 @H_403_9@lastModFrom:最后修改时间的计算方式,openTime:Searcher启动的时刻;dirLastMod:索引更新的时刻 @H_403_9@etagSeed:HTTP返回的ETag头内容 @H_403_9@cacheControl:HTTP返回的Cache-Control头内容

<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@如果需要自定义update处理器:
      @H_403_9@updateProcessor:
        @H_403_9@class:负责处理的类 @H_403_9@name:名字,给updateProcessorChain引用是使用
      @H_403_9@updateProcessorChain:
        @H_403_9@name:自己的名字标记 @H_403_9@processor:指定updateProcessor的name,多个的话用逗号“,”分开

相关名词:
    @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)

猜你在找的XML相关文章