Solr仅返回子查询匹配的父文档

时间:2016-04-19 02:10:38

标签: java solr lucene parent-child

我有一组索引的文档,它们具有伪父子关系。每个子文档都有对父文档的引用。由于某些可用性的复杂性,这些文档没有被索引以支持块连接,即它们不是嵌套结构,而是完全平坦。这是一个例子:

<doc>
  <field name="id">1</field>
  <field name="title">Parent title</field>
  <field name="doc_id">123</field> 
</doc>
<doc>
  <field name="id">2</field>
  <field name="title">Child title1</field>
  <field name="parent_doc_id">123</field>
</doc>
<doc>
  <field name="id">3</field>
  <field name="title">Child title2</field>
  <field name="parent_doc_id">123</field>
</doc>
<doc>
  <field name="id">4</field>
  <field name="title">Misc title2</field>
</doc>

我正在寻找的是如果我搜索“title2”,结果应该带回以下两个文档,1个匹配父级,1个基于常规匹配。

<doc>
  <field name="id">1</field>
  <field name="title">Parent title</field>
  <field name="doc_id">123</field> 
</doc>
<doc>
  <field name="id">4</field>
  <field name="title">Misc title2</field>
</doc>

使用块连接支持,我可以使用Block Join Parent Query Parser,

q={!parent which="content_type:parentDocument"}title:title2

转换结果文档是另一种选择,但它通过ChildDocTransformerFactory提供反向支持。

只是想知道是否有办法以不同的方式解决查询问题。任何指针都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

如果您使用Solr 6,则可以使用Graph query parser扩展结果以包含父记录。