Solr块连接子查询解析器和匹配非父文档的查询
我一直在对嵌套文档使用Solr 6.2.1,并试图用检索特定类型的父文档的所有子文档,但出现以下错误: 父查询生成的文档与父过滤器不匹配 我的文件类似于:Solr块连接子查询解析器和匹配非父文档的查询,solr,Solr,我一直在对嵌套文档使用Solr 6.2.1,并试图用检索特定类型的父文档的所有子文档,但出现以下错误: 父查询生成的文档与父过滤器不匹配 我的文件类似于: <add> <doc> <field name="id">1</field> <field name="type">MYDOCTYPE</field> <field name="isParent">true</field>
<add>
<doc>
<field name="id">1</field>
<field name="type">MYDOCTYPE</field>
<field name="isParent">true</field>
<doc>
<field name="id">1_1</field>
<field name="comments">some comments</field>
</doc>
<doc>
<field name="id">1_2</field>
<field name="comments">some more comments</field>
</doc>
</doc>
<doc>
<field name="id">2</field>
<field name="type">MYDOCTYPE</field>
<field name="isParent">true</field>
<doc>
<field name="id">2_1</field>
<field name="comments">some comments</field>
</doc>
<doc>
<field name="id">2_2</field>
<field name="comments">some more comments</field>
</doc>
</doc>
<doc>
<field name="id">3</field>
<field name="type">MYDOCTYPE</field>
</doc>
</add>
1.
MYDOCTYPE
真的
1_1
一些评论
1_2
还有一些评论
2.
MYDOCTYPE
真的
2_1
一些评论
2_2
还有一些评论
3.
MYDOCTYPE
我试图用:q={!child of=“isParent:true”}type:MYDOCTYPE
我想问题是文档3的类型是MYDOCTYPE,但不是父文档,这是有道理的,因为它没有子文档
是否仍然可以检索所有子文档,而不向文档3添加字段
isParent
我找到了一个解决方法,那就是进行查询:
{!child of=“isParent:true”}类型:“EDH/MAG”+isParent:true
这样,查询的第二部分只与文档1和文档2匹配,不会引发异常。这是一个老问题,但我的回答可能会对某些人有所帮助 id=3的文档被视为子文档是正确的,因此会发生错误 也许我们可以假设父文档是具有isParent:true或不为空的type字段和id的文档,那么查询可能如下所示:
q={!child of="isParent:true OR (id:* AND type:*)"}type:MYDOCTYPE