Solr过滤器查询包括NOT和OR

Kim*_*rly 6 search solr boolean filter

对于Solr中的过滤器查询,我需要包括不属于某种类型的所有文档,以及该类型中具有特定字段值的所有文档.

我试过这个:

fq=(-type_id:(A) OR content:(['' TO *]))
Run Code Online (Sandbox Code Playgroud)

但是它排除了type_idB,C等有空的文件content.(type_id是一个string领域,contenttext.)

我已经看到了这个问题:复杂的SOLR查询包括NOT和OR以及关于运算符的这篇文章:http://robotlibrarian.billdueber.com/2011/12/solr-and-boolean-operators/.我认为我的语法应该是正确的.谁能看到我的错误?


更新:我正在使用LuceneQParser.它将上面的过滤器查询解析为

-type_id:A content:['' TO *]
Run Code Online (Sandbox Code Playgroud)

它将comments(-type_id:A OR (content:[* TO *] AND type_id:A))中建议的过滤器查询解析为

-type_id:A (+content:[* TO *] +type_id:A)
Run Code Online (Sandbox Code Playgroud)

所以没有结果.

Joh*_*ika 12

否定需要一整套来匹配它,所以你的过滤器应该是:

fq=((*:* AND -type_id:A) OR content:(['' TO *]))
Run Code Online (Sandbox Code Playgroud)