在solr中优化否定值的方法?

时间:2014-02-05 05:52:25

标签: search solr lucene

我正在尝试搜索结果,以取消solr中特定id的否定。它发现这可以通过两种方式完成:

(1)fq = userid:( - 750376) (2)fq = -userid:750376

两者都工作正常,两者都给出了正确的结果。但我可以告诉我哪一个更好的方式。我应该选择哪一个?

2 个答案:

答案 0 :(得分:1)

您可以通过启用debugQuery(添加参数fq)找出解析debug=true参数值的查询。然后,在Solr响应中,“debug”下应该有一个条目“parsed_filter_queries”,该条目应该显示正在使用的已解析过滤器查询(或多个查询)的字符串表示。

在您的情况下,fq的两种形式都应解析为同一个查询,即带有单个子句的布尔查询,表明不得出现术语userid:750376。因此,您使用哪种形式并不重要,至少在正确性或性能方面。

答案 1 :(得分:0)

对我们来说,查询看起来没什么不同。但对索尔来说,两者都是一样的。

首先,Solr解析您提供的查询。然后搜索结果。在您的情况下,对于这两个查询,Solr的“ parsed_filter_queries ”仅为fq=-userid:750376

  1. FQ =用户ID:( - 750376)
  2. FQ = -userid:750376
  3. 您可以通过在“管理”窗口中启用 debugQuery 来进行检查。您也可以通过查询传递debugQuery=true。希望这会有所帮助。