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

标签 java solr indexing document solrj

我想在 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),它从索引加载每个文档,添加相关字段并将该文档写回。

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

  1. 将每个表(item、item_user_details)的数据导出到 csv 文件中
  2. 将每个 csv 文件导入 Solr,从顶部(您案例中的项目)开始
  3. 启动嵌入式 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");
  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. 再次提交文档

关于java - 如何在 Solr 索引中创建嵌套文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11877938/

相关文章:

java - 在 Grails/Groovy 中读取 URL 的内容

java - 动态添加adview(admob)到线性布局

java - 如何使用 Spring Data Solr 实现多核和存储库的自定义 Solr 存储库

search - 我可以保护短单词免受 Solr 中 n-gram 过滤器的影响吗?

Magento 重新索引丢失了 Solr 文档

javascript - couchdb 中 "_id"上的索引默认存在?

python - 如何从其他数组的不同起点对 2-D Numpy 数组的范围进行索引

java - 检查数组中是否存在随机数

mysql - MySQL中延迟连接的作用

java - 速度上下文方法错误