【问题标题】:How to create nested document in Solr indexing?如何在 Solr 索引中创建嵌套文档?
【发布时间】:2012-08-09 06:33:46
【问题描述】:

我想在 solr 中创建嵌套文档,我正在使用 java/GWT/SolrJ。

目前我正在索引以下字段:

项目:
id 标题描述。

1 xyz xyzxyzxyz

2 pqr pqrpqrpqr

3 abc abcabcabc.

但现在我想再创建一个与上面的每个文档链接的文档,即对于 id 1,有一个包含以下字段的子文档:

Item_User_Details:

对于第 1 项:

用户详情

1 qweqweqwe

2 xyzxyzxyz

3 asdasdasd

这样我想为上表中的每个item id创建一个item_user_details的链接文档。

我该怎么做...? 提前谢谢...

【问题讨论】:

    标签: java solr indexing document solrj


    【解决方案1】:

    在我们的架构中,我们有很多相关的表。

    我们决定将所有关系扁平化到一个文档中。为了实现这一点,我们创建了一个自定义导入器(使用 SolrJ),它从索引中加载每个文档,添加相关字段并将该文档写回。

    [编辑]
    我们通过以下方式做到这一点:

    1. 为每个表(item、item_user_details)导出 csv 文件中的数据
    2. 将每个 csv 文件导入 Solr,从顶部开始(在您的情况下为项目)
    3. 启动 Embedded-Solr 服务器:
      System.setProperty("solr.solr.home", config.getSolrIndexPath()); CoreContainer.Initializer initializer = new CoreContainer.Initializer(); this.coreContainer = initializer.initialize(); this.solr = new EmbeddedSolrServer(this.coreContainer, "");
      或者,您可以访问远程 solr 实例:
      this.solr = new HttpSolrServer("http://[your-url]/solr");
    4. 为文件中的每一行创建一个 SolrDocument
    5. 将其添加到索引this.solr.add(ClientUtils.toSolrInputDocument(doc));
    6. 提交this.solr.commit();
    7. 从索引(项目)加载文档
    8. 通过文档 ID (item-id) 在 csv 文件中识别 item_user_details 的关系
    9. 使用 item_user_details 中的字段扩展加载的文档
    10. 再次提交文档

    【讨论】:

    • Rene: 你能给我例子或链接来参考吗...因为我是 Solr 的新手所以没有足够的想法。
    • Rene:这意味着所有数据,即 item 和 user_item_data 都在同一个平面文档中建立索引..??那么如果我想为 item_user_details.. 创建另一个文档呢?
    • 是的,您将拥有一个大的非规范化文档。不同文档中 indexin item_user_details 的用例是什么?
    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2016-01-07
    • 2018-07-26
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多