文档字段值作为solr

时间:2019-06-13 14:37:39

标签: solr subquery

我有以下用于solr的嵌套数据:

<add>
  <doc>
  <field name="id">1</field>
  <field name="path">1.root</field>
  <field name="title_tsi">Solr has block join support</field>
  <field name="type">parentDocument</field>
    <doc>
      <field name="id">2</field>
      <field name="path">2.root.sub</field>
      <field name="parent">1</field>
      <field name="comments_tsi">SolrCloud supports it too!</field>
      <field name="type">childDocument</field>
      <field name="subcomment_tsi">
        <doc>
          <field name="id">5</field>
          <field name="path">3.root.sub.sub2</field>
          <field name="parent">2</field>
          <field name="comments_tsi">This is a subcomment</field>
          <field name="type">childchildDocument</field>
        </doc>
    </doc>
  </field>
  </doc>
</add>

我想按Solr查询原样显示嵌套数据。据我所知,ChildDocTransformerFactory无法做到这一点,因为这只会产生扁平化层次结构中文档的所有后代,而不管它们处于哪个级别(子级,孙级等)。

但是,这似乎可以通过子查询来实现。如in the documentation所述,查询类似

q=path:1.*&fl=*,d1:[subquery]&d1.q={!terms f=parent v=$row.id}

将导致显示所有根文档,然后显示根文档中的所有子文档。

但是,如果我想扩展它以在子文档中也包括孙子文档,则通过向子查询添加子查询,我的查询将会失败。

q=path:1.*&fl=*,d1:[subquery]&d1.q={!terms f=parent v=$row.id}&d1.fl=*,d2:[subquery]&d2.q={!terms f=parent v=$row.id}

这将产生所有子文档的所有孙文档,而不仅仅是对应的id / parent条目应匹配的孙文档。

所以我的问题是:

1)“ $ row.id”在查询中到底指什么?我找不到有关此主题的文档。在第一个子查询中,它显然应该引用根文档的原始ID。但是,如何在第二个子查询中引用子文档的ID?

2)对于深度为n的嵌套数据,是否有更聪明的方法?

0 个答案:

没有答案