lucene Solr:如何在子文档和父文档具有相同的字段名称(用于搜索条件)时检索父文档

wmtdaxz3  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(189)

我尝试使用Block Join Parent Query Parser(q={!parent which=allParents}someChildren)检索父文档,但我给出的筛选条件在父文档和子文档中具有相同的字段,因此Parser抛出以下错误:“子查询不能与具有父筛选器的相同文档匹配。将它们组合为must子句(+)以查找问题文档。”
例如:

{
"parent": {
    "name": "sam",
    "age": "30",
    "degree": "MBBS",
    "docType" : "parent",
    "childrens": [{
            "name": "chang",
            "age": "3"

        },
        {
            "name": "joseph",
            "age": "10"

        }
    ]
}

}
我想触发一个下面的查询:
q={!parent which=文档类型:父级}名称:转换器

文件类型:父文件名:sam
在这两种情况下,我都想检索父文档,我想将在节中指定的名称字段与父名称字段或子名称字段匹配。
我认为这是不可能的“块连接父查询解析器”,寻找一些替代的解决方案。
有人能帮我找到更好的方法吗?

ybzsozfc

ybzsozfc1#

可以在someChildren中添加另一个条件,以确保它不会匹配任何父对象。
为此,您可以将特定属性添加到子级,例如"docType" : "child",并将其与name属性结合使用:

q={!parent which="docType:parent" v="+docType:child +name:sam"}

另请参阅:Solr parent-child query

相关问题