Solr之常见配置

本节主要说明solrconfig.xml、solr.xml中有关solr的配置,如索引、查询、缓存等Solr有关的配置常用选项。

一、索引配置

mainIndex标记段定义了控制 Solr 索引处理的低水平的 Lucene 因素。Lucene 基准发布(位于 Lucene 源代码的 contrib/benchmark之下)包含了很多可用来对这些因素的更改效果进行基准测试的工具。此外,请参阅参考资料 一节中的 “影响solr性能因素” 来了解与各种更改相关的性能权衡。

useCompoundFile 通过将很多 Lucene 内部文件整合到单一一个文件来减少使用中的文件的数量。这可有助于减少 Solr 使用的文件句柄数目,代价是降低了性能。除非是应用程序用完了文件句柄,否则 false 的默认值应该就已经足够。
mergeFactor 决定低水平的 Lucene 段被合并的频率。较小的值(最小为 2)使用的内存较少但导致的索引时间也更慢。较大的值可使索引时间变快但会牺牲较多的内存。
maxBufferedDocs 在合并内存中文档和创建新段之前,定义所需索引的最小文档数。段 是用来存储索引信息的 Lucene 文件。较大的值可使索引时间变快但会牺牲较多的内存。
maxMergeDocs 控制可由 Solr 合并的 Document 的最大数。较小的值 (< 10,000) 最适合于具有大量更新的应用程序。
maxFieldLength 对于给定的 Document,控制可添加到 Field 的最大条目数,进而截断该文档。如果文档可能会很大,就需要增加这个数值。然而,若将这个值设置得过高会导致内存不足错误。
unlockOnStartup unlockOnStartup 告知 Solr 忽略在多线程环境中用来保护索引的锁定机制。在某些情况下,索引可能会由于不正确的关机或其他错误而一直处于锁定,这就妨碍了添加和更新。将其设置为 true 可以禁用启动锁定,进而允许进行添加和更新。

二、查询处理配置
在部分,有一些与 缓存 无关的特性,这一点您需要知道。首先, 标记定义了可组合在一起形成一个查询的子句数量的上限。对于大多数应用程序而言,默认的 1024 就应该已经足够;然而,如果应用程序大量使用了通配符或范围查询,增加这个限值将能避免当值超出时,抛出 TooManyClausesException。
三、通配符和范围查询
通配符和范围查询是可自动扩展以包括所有可能匹配查询条件的条目的 Lucene 查询。通配符查询允许使用 * 和 ? 通配符运算符,而范围查询则要求匹配文档必须要在指定的范围之内。例如,若查找 b*,可能导致潜在的数千个不同项都组合进这个查询,进而会导致 TooManyClausesException。

四、缓存配置

缓存在 Solr 中充当了一个非常重要的角色,Solr 中主要有这三种缓存:
Filter cache(过滤器缓存),用于保存过滤器(fq 参数)和层面搜索的结果
Document cache(文档缓存),用于保存 lucene 文档存储的字段
Query result(查询缓存),用于保存查询的结果
还有第四种缓存,lucene内部的缓存,不过该缓存外部无法控制到。
通过这3种缓存,可以对solr的搜索实例进行调优。调整这些缓存,需要根据索引库中文档的数量,每次查询结果的条数等。
在调整参数前,需要事先得到 solr 示例中的以下信息:
1.索引中文档的数量
2.每秒钟搜索的次数
3.过滤器的数量
4.一次查询返回最大的文档数量
5.不同查询和不同排序的个数
这些数量可以在 solr admin 页面的日志模块找到。假设以上的值分别为:
索引中文档的数量:1000000
每秒钟搜索的次数:100
过滤器的数量:200
一次查询返回最大的文档数量:100
不同查询和不同排序的个数:500
然后可以开始修改 solrconfig.xml 中缓存的配置了,第一个是过滤器缓存:
<filterCache class="solr.FastLRUCache" size="200" initialSize="200"  autowarmCount="100"/>
第二个是查询结果缓存:
<queryResultCache class="solr.FastLRUCache" size="500" initialSize="500" autowarmCount="250"/>
第三个是文档缓存:
<documentCache class="solr.FastLRUCache" size="11000" initialSize="11000" />

五、配置多核(Multiple SolrCores)

Solr 支持多个索引库,每个索引库有各自的配置,多个索引库,在 solr中称为多核,多个核可以通过一个统一的管理界面进行管理。创建一个新的核、关闭核甚至替换正在运行的核都是非常快速的,也不用重启servlet 容器(不用重启tomcat)。
多核配置在 solr.xml 文件中,典型的多核配置如下所示:
<solr persistent="true" sharedLib="lib">
    <cores adminPath="/admin/cores">
        <core name="core0" instanceDir="core0dir"/>
        <core name="core1" instanceDir="core1dir"/>
    </cores>
</solr>
这个配置了两个核,名称分别是 core0 和core1,同时制定了他们数据存储的路径。

六、按层面检索

按层面检索是SOLR推出的一项特性,可以再检索结果中按照事先设定的分类,标签等显示,目前已经有很多搜索引擎提供这项功能,现将SOLR的实现步骤展示给大家:
首先在配置之前,需要将自己的分类,或标签等将要按照层面检索的字段,设置为索引,存储格式,并已创建索引。
找到SOLR的核心配置文件: solrconfig.xml
找到SOLR的标准请求处理器,并加入以下XML代码: standard request handler:
<requestHandler name="standard" class="solr.StandardRequestHandler">  
     <lst name="defaults">  
       <str name="facet">true</str>  
       <str name="facet.field">category</str>  
     </lst>  
  </requestHandler>  
<requestHandler name="standard" class="solr.StandardRequestHandler">

solr调优资料:
影响solr性能因素:http://wiki.apache.org/solr/SolrPerformanceFactors
Solr Performance Data:http://wiki.apache.org/solr/SolrPerformanceData
Benchmarking Solr:http://wiki.apache.org/solr/BenchmarkingSolr
Solr性能问题解决:http://wiki.apache.org/solr/SolrPerformanceProblems
改进搜索速度:http://wiki.apache.org/lucene-java/ImproveSearchingSpeed
改进索引速度:http://wiki.apache.org/lucene-java/ImproveIndexingSpeed


参考文章:

1.Solr查询参数
2.Solr配置管理
3.Lucene/Solr优化总结

你可能感兴趣的:(Solr,Lucene,全文检索)