Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr块连接子查询解析器和匹配非父文档的查询_Solr - Fatal编程技术网

Solr块连接子查询解析器和匹配非父文档的查询

Solr块连接子查询解析器和匹配非父文档的查询,solr,Solr,我一直在对嵌套文档使用Solr 6.2.1,并试图用检索特定类型的父文档的所有子文档,但出现以下错误: 父查询生成的文档与父过滤器不匹配 我的文件类似于: <add> <doc> <field name="id">1</field> <field name="type">MYDOCTYPE</field> <field name="isParent">true</field>

我一直在对嵌套文档使用Solr 6.2.1,并试图用检索特定类型的父文档的所有子文档,但出现以下错误:

父查询生成的文档与父过滤器不匹配

我的文件类似于:

<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