如何在Solr索引中创建嵌套文档?

时间:2012-08-09 06:33:47

标签: java solr indexing document solrj

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

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

产品:
id title desc。

1 xyz xyzxyzxyz

2 pqr pqrpqrpqr

3 abc abcabcabc。

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

Item_User_Details:

第1项

用户详细信息

1 qweqweqwe

2 xyzxyzxyz

3 asdasdasd

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

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

1 个答案:

答案 0 :(得分:2)

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

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

[编辑]
我们通过以下方式执行此操作:

  1. 为每个表(item,item_user_details)导出csv文件中的数据
  2. 将每个csv文件导入Solr,从顶部(在您的情况下为项目)
  3. 开始
  4. 启动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");
  5. 为文件中的每一行创建一个SolrDocument
  6. 将其添加到索引this.solr.add(ClientUtils.toSolrInputDocument(doc));
  7. 提交this.solr.commit();
  8. 从索引(项目)
  9. 加载文档
  10. 通过文档ID(item-id)
  11. 在item_user_details的csv文件中表示关系
  12. 使用item_user_details
  13. 中的字段显示已加载的文档
  14. 再次提交文件