0

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

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

项目:
id 标题 desc。

1 xyz xyzxyzxyz

2 pqr pqrpqrpqr

3 abc abcabcabc。

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

Item_User_Details:

对于第 1 项:

用户详情

1 qweqweqwe

2 xyzxyzxyz

3 阿达斯达

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

我怎样才能做到这一点...?提前致谢...

4

1 回答 1

2

在我们的模式中,我们有很多相关的表。

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

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

  1. 将每个表的数据导出为 csv 文件(item,item_user_details)
  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) 在 item_user_details 的 csv 文件中识别关系
  9. 使用 item_user_details 中的字段扩展加载的文档
  10. 再次提交文档
于 2012-08-09T08:40:40.537 回答