我们说我有一套简单的嵌套文档(我使用的是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
答案 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将进一步过滤结果(谁没有 有条件的孩子的父母:假)只给你父母 没有条件的孩子:假。