Solr-具有许多子约束的块联接父查询

Tim*_*ong 1 solr join constraints block

该问题适用于以下嵌套文档:

<doc>
  <field name="id">1</field>
  <field name="title">Solr has block join support</field>
  <field name="content_type">parentDocument</field>
  <doc>
    <field name="id">11</field>  
    <field name="type">comment</field>  
    <field name="comments">SolrCloud supports it too!</field>
  </doc>
  <doc>
    <field name="id">12</field>  
    <field name="type">publisher</field>  
    <field name="address">England</field>
    ....
  </doc>
</doc>
....
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何编写允许对多个嵌套子文档进行约束的“块联接父查询”?我确实尝试了以下方法,但是没有用:

{!parent which="content_type:accommodation"}
(
  (+type:comment +comments:SolrCloud) AND
  (+type:publisher +address:England)
) 
Run Code Online (Sandbox Code Playgroud)

结果返回0!

Mol*_*Man 5

对于您的用例,您可以只使用多个块联接过滤器:

q=*:*&
fq={!parent which="content_type:accommodation"}(+type:comment +comments:SolrCloud)&
fq={!parent which="content_type:accommodation"}(+type:publisher +address:England)
Run Code Online (Sandbox Code Playgroud)

第一个筛选器Clouse将查找哪些父文档中有一个满足条件的孩子(+type:comment +comments:SolrCloud)

第二个过滤器clouse将对满足第一个过滤器的父文档的子集进行操作。并且它将在此子集中找到满足条件的父文档(+type:publisher +address:England)