Solr:当子项和父项具有与搜索条件中相同的字段名称时,如何检索“父文档”

问题描述

我正在尝试使用“块联接父查询”解析器来检索父文档。 (q = {!parent which = allParents} someChildren), 但是我给出的过滤条件是在父级和子级中具有相同的字段,因此解析器抛出以下错误: “子查询不得与父过滤器匹配相同的文档。将它们与必须子句(+)组合在一起以查找问题文档。”

例如:

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

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

        }
    ]
}

}

我想触发以下查询:

q = {!parent which = docType:parent}名称:chang

q = {!parent which = docType:parent}名称:sam

在两种情况下,我都想检索父级文档,我想将本节中指定的名称字段与父级名称字段或子级名称字段匹配。

我认为使用“阻止联接父查询解析器”是不可能的,正在寻找其他解决方案。

请问有人可以提供更好的方法吗?

解决方法

可以在 someChildren 中添加另一个条件以确保它不会匹配任何父级。

为此,您可以向子项添加特定属性,例如 "docType" : "child",并将其与 name 结合使用:

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

另见:Solr parent-child query

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...