我的Solr服务器中有一个简单的文档:
{
"id": 1,
"type": "dad",
"_childDocuments_": [
{
"id": 2,
"name": "Alice"
},
{
"id": 3,
"name": "Bob"
}
]
}
我想过滤此文档以仅检索" Alice"文档,以及父文档,不包括其他孩子," Bob"。
预期结果:
{
"id": 1,
"type": "dad",
"_childDocuments_": [
{
"id": 2,
"name": "Alice"
}
]
}
为此,我使用以下查询:
q: name:Alice
fl: *, [child parentFilter=*:* limit=10]
问题是:此过滤器仅返回Alice子文档,而没有相应的父父文档。
如何修复此搜索?我已尝试使用parentFilter=type:dad
,与建议的here一样,但此查询引发an error我无法理解:
父查询不得与父过滤器之外的任何文档匹配。将它们组合为必须(+)和必须不( - )子句来查找问题文档。的docID = 0
另外,如果我过滤:
q: type:dad name:Alice
fl: *, [child parentFilter=*:* limit=10]
我将收到两份文件:爸爸+爱丽丝,而不是一份带爸爸的文件 - >爱丽丝
答案 0 :(得分:0)
您可以将childFilter
与parentFilter
:
q= type:dad
fl= *, [child parentFilter=type:dad childFilter=name:Alice limit=10]
结果:
"response": {
"numFound": 1,
"start": 0,
"docs": [
{
"id": "1",
"type": ["dad"],
"_version_": 1603065478506348544,
"type_str": ["dad"],
"_childDocuments_": [
{
"id": "2",
"name": ["Alice"],
"_version_": 1603065478506348544,
"name_str": ["Alice"]
}
]
}
]
}