我正在尝试搜索结果,以取消solr中特定id的否定。它发现这可以通过两种方式完成:
(1)fq = userid:( - 750376) (2)fq = -userid:750376
两者都工作正常,两者都给出了正确的结果。但我可以告诉我哪一个更好的方式。我应该选择哪一个?
答案 0 :(得分:1)
您可以通过启用debugQuery(添加参数fq
)找出解析debug=true
参数值的查询。然后,在Solr响应中,“debug”下应该有一个条目“parsed_filter_queries”,该条目应该显示正在使用的已解析过滤器查询(或多个查询)的字符串表示。
在您的情况下,fq
的两种形式都应解析为同一个查询,即带有单个子句的布尔查询,表明不得出现术语userid:750376
。因此,您使用哪种形式并不重要,至少在正确性或性能方面。
答案 1 :(得分:0)
对我们来说,查询看起来没什么不同。但对索尔来说,两者都是一样的。
首先,Solr解析您提供的查询。然后搜索结果。在您的情况下,对于这两个查询,Solr的“ parsed_filter_queries ”仅为fq=-userid:750376
。
您可以通过在“管理”窗口中启用 debugQuery 来进行检查。您也可以通过查询传递debugQuery=true
。希望这会有所帮助。