某些过滤器查询相对难以计算,但是缓存很快就被轻量级的过滤器查询所填充。
例如:
fq=language_facet:eng
返回700万条记录,大约需要300毫秒来计算。
(我使用q=*:*&fq=language_facet:eng
进行验证)
几乎每次查询此过滤器查询时,缓存中都不存在该查询。
通过两种不同的方式对此进行了验证:
1.按查询时间。如果在发出q=*:*&fq=language_facet:eng
呼叫之后经过了足够的次数,则下一个呼叫大约需要300毫秒。
2.使用Solr Adming:插件/统计-> CACHE-> filterCache。将solrconfig.xml filterCache更改为显示所有项目(并将大小减小为300,这样就可以管理)
<filterCache class="solr.FastLRUCache" size="300" initialSize="300" autowarmCount="0" showItems="300" cleanupThread="false"/>
我想象内置的精简构面调用通常包含数百个构面值以进行计算,从而接管缓存。
怎样才能使重型过滤器不消失? 是否应将FastLRUCache算法替换为其他算法? filterCache的大小为150,000(也尝试过较小的大小)
使用Solr 4.7.2并设置6个聚合器和约200个分片。