【问题标题】:Indexing nested documents in Solr在 Solr 中索引嵌套文档
【发布时间】:2012-04-02 20:04:10
【问题描述】:

我已经看到 Solr 将允许您索引 JSON: http://wiki.apache.org/solr/UpdateJSON

但是,没有一个示例是嵌套的。你能索引这样的东西吗?如果不能,它通常是如何处理的?

{
  name: 'ben',
  state: 'california',
  country: 'united states',
  companies: [
    {
      name: 'google',
      title: 'software engineer',
    },
    {
      name: 'sherwin-williams',
      title: 'web developer'
    }
  ],
}

【问题讨论】:

  • 随着最新的 Lucene 版本,现在有嵌套:blog.mikemccandless.com/2012/01/…
  • Lucene 从 3.4 版开始通过称为 index-time join 的功能支持嵌套文档。但是,我找不到任何关于如何创建嵌套文档的教程或简单示例。

标签: solr lucene


【解决方案1】:

有几种方法可以去。可以显式存储 json 字符串,并在应用层处理序列化。 Elasticsearch 透明地使用这种方法。

对于索引,您可以使用命名约定来展平数据。 Mongodb 就是使用这样的语法。

companies.name: ['google', 'sherwin-williams']
companies.title: ['software engineer', 'web developer']

在这种情况下请注意类似的查询

<BooleanQuery: +companies.name:google +companies:web developer>

会匹配。如果位置很重要,则必须使用更高级的 SpanQuery。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我们想用数组和映射在 solr 中索引复杂的 json 文档(比您发布的示例复杂得多)。

    最后我修改了 JsonLoader 类来接受这种文件。它的作用是扁平化 json 结构并允许对字段进行索引并保留原始 json 结构 [company]。最后它支持深度嵌套

    您可以在

    上找到带有一些解释的源代码

    http://www.solrfromscratch.com/2014/08/20/embedded-documents-in-solr/

    在您的示例中,它将存储/索引 [基于您如何配置字段] 以下结构

    name: 'ben',
    state: 'california',
    country: 'united states',
    companies.0.name: 'google',
    companies.0.title: 'software engineer',
    companies.1.name: 'sherwin-williams',
    companies.1.title: 'web developer'
    companies_json:[
        {
          name: 'google',
          title: 'software engineer',
        },
        {
          name: 'sherwin-williams',
          title: 'web developer'
        }
      ]    
    

    M.

    【讨论】:

      【解决方案3】:

      嵌套的 Json 可以在 solr 中的子文档的帮助下被索引。我们可以使用Block and join query parsers来查询。

      参考this question

      【讨论】:

        猜你喜欢
        • 2012-08-23
        • 1970-01-01
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        • 2018-07-26
        • 2016-08-03
        • 1970-01-01
        • 2017-03-05
        相关资源
        最近更新 更多