Solr 筛选子文档并检索父文档+;子文档
我的Solr服务器中有一个简单的文档:Solr 筛选子文档并检索父文档+;子文档,solr,Solr,我的Solr服务器中有一个简单的文档: { "id": 1, "type": "dad", "_childDocuments_": [ { "id": 2, "name": "Alice" }, { "id": 3, "name": "Bob" } ] } 我想筛选此文档,以便仅检索“Alice”文档以及
{
"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子文档,而不返回相应的dad父文档
如何修复此搜索?我曾尝试使用建议的parentFilter=type:dad
,但此查询引发了我无法理解的问题:
父查询不能与父过滤器之外的任何单据匹配。将它们组合为must(+)和must not(-)子句以查找问题文档。docID=0
此外,如果我使用以下选项进行筛选:
q: type:dad name:Alice
fl: *, [child parentFilter=*:* limit=10]
我将得到两个文档:dad+Alice,而不是一个包含dad->Alice的文档。您可以使用
childFilter
和parentFilter
:
q= type:dad
fl= *, [child parentFilter=type:dad childFilter=name:Alice limit=10]
结果:
“响应”:{
“numFound”:1,
“开始”:0,
“文件”:[
{
“id”:“1”,
“类型”:[“dad”],
“版本”:1603065478506348544,
“类型_str”:[“dad”],
“u childDocuments_uu”:[
{
“id”:“2”,
“姓名”:[“爱丽丝”],
“版本”:1603065478506348544,
“姓名”:[“爱丽丝”]
}
]
}
]
}
[child…childFilter=name:Alice]
怎么样?