【问题标题】:Deeply nested JSON documents in Apache SolrApache Solr 中深度嵌套的 JSON 文档
【发布时间】:2016-02-19 10:19:50
【问题描述】:

我有一个嵌套很深的文档(伪结构如下图):

[{
    "id": "1",
    "company_id": "1",
    "company_name": "company_1",
    "departments":[{
                 "dep1" : [{
                           "id" : 40,
                           "name" : xyz
                           },
                           {
                           "id" : 41,
                           "name" : xyr
                           }],
                "dep2": [{
                }]
            }]
    "employeePrograms" :[{
    }]
}]

如何在 Apache Solr 中索引这些类型的文档? 文档仅给出了直接子文档的概念。

【问题讨论】:

    标签: json apache solr


    【解决方案1】:

    不幸的是,我对这项技术没有丰富的经验,但想提供帮助。这是一些官方文档,可能有用:oficial doc more specific

    如果您有一些不常见的问题,请告诉它,也许是任何错误,或者其他什么。我会尽力提供帮助)

    更新1: Solr 只能维护数据的“平面”表示。您正在尝试做的事情实际上是不可能的。有许多变通方法,例如使用dynamic fields 和使用solr join 链接多个数据集。

    谈到深层嵌套?我找到了这样一个解决方法的例子。 如果你有类似的东西:

     "docs": [
          {
            "name": "Product Name",
            "categories": [
              {
                "name": "Category 1",
                "priority": 8
              },
              {
                "name": "Category 2",
                "priority": 6
              }
              ...
            ]
          },
    

    您必须像这样修改它以使其不深嵌套:

     "docs": [
        {
          name: "Sample Product"
          categories: [
          {
            priority_category: "9_Category 1",
          },
          {
            priority_category: "5_Category 2",
          }
          ...
          ]
        },
    

    所以,你做了类似的事情,检查是否有任何错误的地方

    【讨论】:

    • 感谢@Altenrion。非常感谢您的帮助。文档给出了一个单独的子文档级别的想法。但是我有多个级别的子文档。请参考我的问题中的伪结构。
    • 我在 Solr 中成功索引了嵌套文档。[{ "id": "1", "company_id": "1", "company_name": "company_1", "content_type":"parentDocument" , "childDocuments":[{ "content_type":"dep", "childDocuments" : [{ "id" : 40, "dep_name" : xyz }, { " id" : 41, "dep_name" : xyr }, { "id" : 22, "emp_program": zzz }] }] }]
    • 当我想取回文档(父文档和子文档作为单个文档)时,我使用查询获取父文档和相应的子文档。 q={!parent which=content_type:parentDocument}&fl=[child parentFilter=content_type:parentDocument]。但是文档嵌套结构丢失了。我只得到子文档的平面列表(即使是父母的孙子也被视为父母的孩子)。请让我知道如何在结果中获取或形成文档的嵌套结构?
    • 我已经更新了答案,而不是写新的。让我知道它是否有帮助
    • 不幸的是,我无法展平文档。也许 Solr 不适合我的用例(深度嵌套的 JSON 文档)。我发现 Elasticsearch 天生就支持深度嵌套的结构并且适合我的用例。无论如何感谢您的帮助。
    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 2020-08-29
    • 2021-03-29
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多