如何查询Solr中的空字段或特定值

10

如何进行或运算来筛选空字段或特定值?

这似乎并不能实现:

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

谢谢。


返回翻译后的文本:空白或不存在(即:未定义)? - Geert-Jan
6个回答

8
答案是使用双重否定,正如Maurizio In denmark所建议的那样。数学上,这与非否定查询相同,但是Solr只能理解双重否定版本:
q=-(-PrivacyLevel:2 PrivacyLevel:*)

注意:这也适用于过滤查询:
fq=-(-PrivacyLevel:2 PrivacyLevel:*)

6

查看SolrQuerySyntax

纯负查询:

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

您可以尝试:

q=-PrivacyLevel:[* TO *] OR PrivacyLevel:2


请检查以下链接:https://dev59.com/PWQn5IYBdhLWcg3wJ0i5#17045097。 - Jayendra
同样的答案链接。多么冗余! - Jack Miller

3

这应该是有效的:

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

3
这对我有用:

这是我的解决方案:

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

1

0

对我有效的解决方案是 q = -PrivacyLevel:(*) PrivacyLevel:("2")

编码愉快。


“**”?这不是一个有效的查询项。 - Jack Miller
1
  • 和 ** 都可以完成相同的工作。为了避免歧义,我编辑了我的答案。
- Bandham Manikanta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接