对于我的实现,我之前使用 solr 过滤器查询,例如使用 solrj。
fq=content_source:SharePoint+AND+AuthenticatedUserName=lalit
但是现在当我使用 lucene 布尔查询时,查询是这样构建的。
content_source=SharePoint&AuthenticatedUserName=lalit
我想澄清两个选项之间的区别,因为我认为布尔查询也是一种过滤查询。哪种场景应该使用哪种。
最后哪一个使用起来性能更好?
过滤查询用于确定哪些文档属于结果集中,与该结果集中的文档顺序无关。
查询会影响结果在结果集中的顺序。
如果您搜索
name:finn site:stackoverflow
,您将获得带有 name=finn
或 site=stackoverflow
的所有文档,并且共享这两个条件的文档均排在顶部。相反,如果您将 site
移至筛选查询,您会发现您仅 获得了 stackoverflow
的结果,并且在这些结果中,您只会看到 finn
。
再进一步说,如果您搜索
(name:finn OR name:chris) site:stackoverflow
,您会得到大量结果,其中 finn
和 chris
结果浮在顶部。如果您再次将 site
移至筛选查询,您将仅获得包含 site=stackoverflow
的结果,并且仅包含 finn
或 chris
的结果,而带有 finn
和 chris
的结果将浮动到顶部。