我正在阅读优秀的Solr in Action书籍,在第7章中有关查询的内容,它首先声明过滤查询(例如fq=title:"Solr in Action"
)具有以下优势:它们通常可在搜索之间重复使用,并且其结果可以独立缓存。它继续描述执行查询的过程
...对索引执行过滤器以获得新的
DocSet
...
稍后,在解释cost
本地参数(例如fq={!cost=42}title:"Solr in Action"
)时,它会说明
...如果可以首先执行减少结果集的过滤器,那么任何其他过滤器都可以使用较少的文档来执行,因此执行速度会更快。
这似乎与我相矛盾。如果说第二个过滤器只考虑第一个过滤器产生的DocSet
,则缓存第二个过滤器的结果是没有意义的。它不会重复用于下一次搜索,因为下一次搜索可能没有第一次过滤。
对过滤器查询应用成本是否意味着它将不再针对索引执行,而是再次使用所有先前过滤器的结果?如果是这样,那会如何影响可缓存性?