Solr中OR子句的行为

时间:2012-12-25 22:19:20

标签: solr solrnet

我的solr索引包含具有名为department的字段的文档。该字段是多值非必需的int字段。我想构造一个结果必须是

的联合的查询
  • 所有不包含现场部门的文件
  • 包含字段部门的所有文档,但字段的值仅限于少数几个。

我尝试构建看起来像这样的查询:

-department:* OR (department:* AND department:(100 OR 200))

这不会返回任何结果。而如果我只是使用

-department:* 

department:* AND department:(100 OR 200)

,查询似乎运作良好。简而言之,我在这种情况下无法理解OR子句的行为。有什么指针吗?

2 个答案:

答案 0 :(得分:2)

结帐SolrQuerySyntax

纯正否定查询: -

  

-field:[* TO *]查找没有字段值的所有文档

您可以尝试: -

  

q = -department:[* TO *] OR department:(100 OR 200)

答案 1 :(得分:0)

为了实现您的目标,我认为您可以使用Solr grouping

你可以提供类似的东西,

&q=*&group=true&group.query=department:[100]&group.query=department:[200]&group.query=-department:[*]