Solr查询调优二:fq 禁用缓存和post filter

关闭filter query的缓存
实际应用中,有很多的filter cache是没有必要的,而且filter cahce的上限数量是固定,所以应该禁用一些不常用的filter cache。
例子:
1、fq={!cache=false}id:123&fq={!frange l=90 u=100 cache=false}
2、scale(query({!v=”content:(solr OR lucene)”}),0,100)

改变filter执行顺序
将过滤最多数据的filter置于最前面,这样后面如果有需要进行高开销的filter,计算的数据量就大大减少。
例子:
fq={!cost=1}category:technology&
fq={!cost=2}date:[NOW/DAY-1YEAR TO *]&
fq={!geofilt pt=37.773,-122.419 sfield=location d=50 cost=3}&
fq={!frange l=90 u=100 cache=false cost=100}
scale(query({!v=”content:(solr OR lucene)”}),0,100)

COST的数值越高,filter越后执行。将特别耗资源的filter设置成100,同时将cache变成false,因为它的结果是随机值,没有保存的意义。类似于POST FILER。

POST FILTER
Post Filter是一个特殊filter。它在所有的main query和filter执行完毕后才开始执行,即在mainquery和filter产生的最后交集文档后执行post filter。
post filter类似于前面提到的将filter设置为cost=100.
post filter 一般用于高开销的检索和匹配。自己可以实现postfiler interface实现自己的post filter。

发表评论

电子邮件地址不会被公开。 必填项已用*标注