如何解决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"}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。