2013-05-07 129 views
1

我们有一个名为tags的多值索引字段。我们希望找到通过筛选查询符合下列条件之一的所有文件:Solr过滤器查询中多值字段上的布尔查询

  • 如果标签flagged存在,则标记safe也应该存在。
  • 标签flagged不存在。

我试过fq=(tags:(flagged AND safe) OR -tags:flagged)但它没有返回想要的结果。而是返回标记为safe的文档,而不是标记flagged,即结果与此查询相同:fq=(tags:safe AND -tags:flagged)。我如何解决我的查询?

fq=(tags:safe AND -tags:flagged)fq=(tags:safe OR -tags:flagged)都返回相同的结果。为什么是这样?

Solr版本:3.6.2

+0

你可以尝试FQ =(标签:(标记AND标签:(*:* NOT flagged)) – Jayendra 2013-05-08 04:18:11

+0

该查询给出了一个http 400.如果我做了'fq =(tags:(标记AND安全)或者tags:(不标记))',那么结果是与'fq = tags:(标记和安全)'相同。 – arun 2013-05-13 19:59:16

回答

3

以下工作正常。

从埃里克孵化器(solr的用户的邮寄组):

内纯粹负子句不受Lucene的不允许的。 (Solr的支持顶级否定句,虽然如此,如预期q=NOT foo作品)

要获得一个嵌套的负子句来上班,试试这个:

q=tags:(flagged AND safe) OR (*:* AND NOT tags:flagged)