如何在Solr中通过块连接否定过滤器查询?

如何在Solr中通过块连接否定过滤器查询?,solr,Solr,假设我有一组简单的嵌套文档(我使用的语法与Yonik在其上使用的语法相同): 此筛选查询返回所有具有条件为true的子文档的父文档: fq={!parent which=parent:true}(+parent:false AND +condition:true) /* returns 1, 3 */ 此筛选查询返回所有父文档,其中至少有一个子文档没有条件:false: fq={!parent which=parent:true}(+parent:false AND -condition:fa

假设我有一组简单的嵌套文档(我使用的语法与Yonik在其上使用的语法相同):

此筛选查询返回所有具有条件为true的子文档的父文档:

fq={!parent which=parent:true}(+parent:false AND +condition:true) /* returns 1, 3 */
此筛选查询返回所有父文档,其中至少有一个子文档没有
条件:false

fq={!parent which=parent:true}(+parent:false AND -condition:false) /* returns 1, 3 */
如何进行筛选查询,以返回所有子文档为零且条件为false(即仅返回文档3)的父文档

fq=-{!parent which=parent:true}(+parent:false AND +condition:false) /* throws org.apache.solr.search.SyntaxError */
一种可能的解决办法:

fq=-_query_:"{!parent which=parent:true}(+parent:false AND +condition:false)"

我保留这个问题,以防有人有其他想法。

OP的答案会返回所有文档,但不包含条件:false的父文档除外

也就是说,它返回文档1和2的子文档以及整个文档3

q=-_query_:"{parent which=parent:true}condition:false"&fq={!parent which=parent:true}condition:*
上述查询中的fq将进一步筛选结果(没有 父母对孩子的条件:假)只给你父母 没有孩子的情况:错误

q=-_query_:"{parent which=parent:true}condition:false"&fq={!parent which=parent:true}condition:*