Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
过滤器在Solr中的应用顺序和控制方法?_Solr_Filter_Lucene - Fatal编程技术网

过滤器在Solr中的应用顺序和控制方法?

过滤器在Solr中的应用顺序和控制方法?,solr,filter,lucene,Solr,Filter,Lucene,我理解语义:首先执行查询,然后将过滤器作为docidset应用(尝试从缓存中获取过滤器) 对于某些查询,它是非常低效的,例如,如果主查询是所有文档的复杂双函数(sqrt(流行度)+距离(…),首先我将对所有索引评估此函数,然后对其进行筛选 有没有办法对过滤后的单据id集运行原始查询 首先执行查询,然后将过滤器作为docidset应用(尝试从缓存中获取过滤器) 这不是真的,Solr只计算所需的分数,这意味着如果任何筛选器与文档不匹配,则不会计算此文档的分数 但是,确实需要执行磁盘访问。为了防止出现

我理解语义:首先执行查询,然后将过滤器作为docidset应用(尝试从缓存中获取过滤器)

对于某些查询,它是非常低效的,例如,如果主查询是所有文档的复杂双函数(sqrt(流行度)+距离(…),首先我将对所有索引评估此函数,然后对其进行筛选

有没有办法对过滤后的单据id集运行原始查询

首先执行查询,然后将过滤器作为docidset应用(尝试从缓存中获取过滤器)

这不是真的,Solr只计算所需的分数,这意味着如果任何筛选器与文档不匹配,则不会计算此文档的分数


但是,确实需要执行磁盘访问。为了防止出现这种情况,Solr有一个选项,该选项将首先在缓存中获取DocSet(如果可用),然后在内存中对其进行排序。我想这正是你想要的。

Solr缓存很复杂,有很多选择,但Yonik写了一篇非常有趣的博客文章,我鼓励阅读。好文章,谢谢。但是,目前还不清楚非缓存过滤器的执行顺序。这似乎很重要,因为大文档集和小文档集之间的交集要比反之慢。关于@jpountz,我有一个问题,我试图理解useFilterForSortedQuery的基本原理/用途。你能给我指一些更好的医生作为参考吗?我还注意到,Yonik Seeley早就在solr线程上提到过避免使用它,并且它仍然在solrconfig.xml中标记为commented。()