【问题标题】:SOLR - Can I get Parent fields and Child fields in the same result?SOLR - 我可以在同一结果中获得父字段和子字段吗?
【发布时间】:2013-12-29 14:46:21
【问题描述】:

我将 SOLR 4.6 与父子文档一起使用。 我知道我可以使用“加入”或“阻止加入”来查找特定类型(子或父)的文档,

但是,我可以在同一个响应中获取父文档字段和子文档字段吗?

例如: 如果我有 PersonfirstName=BobLastName=Marley 和子文档 AddressCity=NY

我想在结果文档中获得 firstName=BobLastName=MarleyCity=NY

【问题讨论】:

    标签: join solr


    【解决方案1】:

    尝试使用父子关系进行索引时间块连接并在查询中使用扩展组件(Solr 4.8)。更多详情查看乔尔的帖子@http://heliosearch.org/expand-block-join/

    【讨论】:

    • heliosearch.org 已消失,因此此答案不再有用。有没有可以参考的 Solr 文档?
    【解决方案2】:

    根据 Solr 文档,这是不可能的。 http://wiki.apache.org/solr/Join

    “对于习惯使用 SQL 的人来说,需要注意的是 Solr 中的 Joins 并不真正等同于 SQL Joins,因为没有关于被“从”连接的表的信息传递到最终结果中。更合适的 SQL类比将是一个“内部查询”。

    这个 Solr 请求...

    /solr/collection1/select ? fl=xxx,yyy & q={!join from=inner_id to=outer_id}zzz:vvv 可以和这个SQL语句媲美...

    选择 xxx, yyy 来自集合1 WHERE outer_id IN (SELECT inner_id FROM collection1 where zzz = "vvv")

    【讨论】:

      【解决方案3】:

      实际上这仍然是不可能的,但是。有补丁可以找到here - SOLR-5285

      【讨论】:

        【解决方案4】:

        子文档可以在 expand block join 中解释的扩展属性的帮助下检索。如果我们添加

        expand=true&expand.q=*:*&expand.field=_root_
        

        到查询。我们应该能够在“扩展”属性中获取所有子文档。

        【讨论】:

          猜你喜欢
          • 2019-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多