据我了解,基于查询找到文档,然后过滤器会过滤该结果。
查询是影响文档得分/相关性的唯一因素。
如果我查询与相关性相关的结果,并且过滤不相关的项目,是否会有任何性能(缓存)改进?
这是我的情况。我有很多产品,网站经常按类别或制造商搜索产品。我正在考虑使用查询,因为这会将产品降低到可以缓存的较小子集。然后我可以按产品规格过滤我的结果。我应该使用过滤器来规范吗?这样我们就可以根据已经缓存(通过lucene)的产品子集(类别或制造商)进行过滤。
答案 0 :(得分:1)
使用过滤器也不会影响返回的分数,而查询中的其他术语也会影响返回的分数。例如,如果用户从可用类别列表中选择某个类别作为构面,则应使用过滤器:
结果分数(相关性)基于除类别
之外的查询字词答案 1 :(得分:0)
filter
和query
之间的区别主要在于filter
是准确的。如果您在brand=...
上过滤,那么您只能获得该品牌。如果您对其进行查询,您将获得品牌以及可能与您的查询相匹配的其他结果。
所以问题是,你想要一个精确的过滤器,还是只是为了相关性?
答案 2 :(得分:0)
过滤提供了一种机制,可以进一步限制查询结果,并在多次运行相同查询时提供可能的性能提升。 我们主要使用过滤器来提高安全性 - 这会在缓存查询结果时提供性能提升。