2012-08-14 71 views
4

如何执行过滤为空白字段或特定值的OR表达式?如何查询空白字段或特定值的Solr

这似乎并没有做到这一点:

Q =( - PrivacyLevel:*)或PrivacyLevel:2

感谢

+0

空白或不存在(即:undefined)? – 2012-08-14 21:01:53

回答

5

结帐SolrQuerySyntax

纯负查询: -

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

您可以尝试: -

Q = -PrivacyLevel:[*到*]或PrivacyLevel:2项

+3

这不适用于我:'-type:[* TO *]或输入:company' – Petah 2013-08-18 22:03:14

+0

您可以查看http://stackoverflow.com/questions/17044661/how-to-filter-search-by-values - 即 - 是 - 不提供/ 17045097#17045097 – Jayendra 2013-08-24 14:15:40

1

这应该工作:

q=(*:* AND -PrivacyLevel:[* TO *]) OR PrivacyLevel:2 
3

这是为我工作:

fq=(* -type:[ * TO * ]) || (* +type:company) 
0

答案是使用双重否定,如Maurizio In denmark所示。数学上,这等同于未取非的查询,但是,Solr的既懂双重否定版本:

q=-(-PrivacyLevel:2 PrivacyLevel:*) 

注:这也适用于过滤查询:

fq=-(-PrivacyLevel:2 PrivacyLevel:*)