我想在 solr 中创建嵌套文档,我使用的是 java/GWT/SolrJ。
目前我正在对以下字段建立索引:
项目:
id 标题描述。
1 xyz xyzxyzxyz
2 pqr pqrpqrpqr
3 abc abcabcabc。
但现在我想再创建一个与上面的每个文档链接的文档,即对于 id 1,有一个包含以下字段的子文档:
项目用户详细信息:
对于第 1 项:
用户详细信息
1qweqweqwe
2xyzxyzxyz
3 阿斯达斯达斯德
通过这种方式,我想为上表中的每个项目 ID 创建一个 item_user_details 的链接文档。
我怎样才能做到这一点...? 提前致谢...
最佳答案
在我们的架构中,我们有很多相关的表。
我们决定将所有关系扁平化为一份文档。为了实现这一目标,我们创建了一个自定义导入器(使用 SolrJ),它从索引加载每个文档,添加相关字段并将该文档写回。
[编辑]
我们通过以下方式做到这一点:
- 将每个表(item、item_user_details)的数据导出到 csv 文件中
- 将每个 csv 文件导入 Solr,从顶部(您案例中的项目)开始
- 启动嵌入式 Solr 服务器:
System.setProperty("solr.solr.home", config.getSolrIndexPath());
CoreContainer.Initializer初始化程序= new CoreContainer.Initializer();
this.coreContainer =initializer.initialize();
this.solr = new EmbeddedSolrServer(this.coreContainer, "");
或者,您可以访问远程 solr 实例:
this.solr = new HttpSolrServer("http://[your-url]/solr");
- 为文件中的每一行创建一个 SolrDocument
- 将其添加到索引
this.solr.add(ClientUtils.toSolrInputDocument(doc));
- 提交
this.solr.commit();
- 从索引加载文档(项目)
- 通过文档 ID (item-id) 识别 csv 文件中 item_user_details 的关系
- 使用 item_user_details 中的字段扩展加载的文档
- 再次提交文档
关于java - 如何在 Solr 索引中创建嵌套文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11877938/