Solr缓存

Solr缓存机制详解

缓存在 Solr 中充当了一个非常重要的角色,Solr 中主要有这三种缓存:

Solr缓存类型

1. Filter cache(过滤器缓存)

用于保存过滤器(fq 参数)和层面搜索的结果

2. Document cache(文档缓存)

用于保存 lucene 文档存储的字段

3. Query result(查询缓存)

用于保存查询的结果

还有第四种缓存,lucene 内部的缓存,不过该缓存外部无法控制到。

缓存调优

通过这 3 种缓存,可以对 solr 的搜索实例进行调优。调整这些缓存,需要根据索引库中文档的数量,每次查询结果的条数等。

调优前需要收集的信息

在调整参数前,需要事先得到 solr 示例中的以下信息:

  • 索引中文档的数量
  • 每秒钟搜索的次数
  • 过滤器的数量
  • 一次查询返回最大的文档数量
  • 不同查询和不同排序的个数

这些数量可以在 solr admin 页面的日志模块找到。

示例参数设置

假设以上的值分别为:

  • 索引中文档的数量: 1,000,000
  • 每秒钟搜索的次数: 100
  • 过滤器的数量: 200
  • 一次查询返回最大的文档数量: 100
  • 不同查询和不同排序的个数: 500

solrconfig.xml 缓存配置

基于以上假设值,可以开始修改 solrconfig.xml 中缓存的配置:

第一个是过滤器缓存

1
2
3
4
<filterCache class="solr.LRUCache" 
size="200"
initialSize="200"
autowarmCount="100"/>

第二个是查询结果缓存

1
2
3
4
<queryResultCache class="solr.LRUCache" 
size="500"
initialSize="500"
autowarmCount="250"/>

第三个是文档缓存

1
2
3
4
<documentCache class="solr.LRUCache" 
size="10000"
initialSize="5000"
autowarmCount="0"/>

这几个配置是基于以上的几个假设的值进行调优的。

© 2025 Solr Community of China All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero