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

时间:2016-02-11 19:39:30

标签: solr

我们说我有一套简单的嵌套文档(我使用的是Yonik在Solr Nested Documents page上使用的相同语法):

<my-table>

此过滤器查询返回所有包含{ id: 1, parent: true, _childDocuments_: [ { parent: false, condition: true }, { parent: false, condition: false } ] }, { id: 2, parent: true, _childDocuments_: [ { parent: false, condition: false } ] }, { id: 3, parent: true, _childDocuments_: [ { parent: false, condition: true } ] } 子项的父文档:

condition:true

此过滤器查询返回至少有一个没有fq={!parent which=parent:true}(+parent:false AND +condition:true) /* returns 1, 3 */ 的孩子的所有父文档:

condition:false

如何创建一个过滤查询,该过滤查询返回所有具有fq={!parent which=parent:true}(+parent:false AND -condition:false) /* returns 1, 3 */ 子项的子文档,即只返回文档3?

condition:false

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案:

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

我保持这个问题的开放,以防任何人有任何其他想法。

答案 1 :(得分:0)

OP的答案会返回所有文件,但那些没有条件的父文件除外:

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

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

上述查询中的fq将进一步过滤结果(谁没有   有条件的孩子的父母:假)只给你父母   没有条件的孩子:假。