我见过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'
}
],
}
答案 0 :(得分:1)
有几种方法可以去。可以显式存储json字符串,并在应用程序层中处理序列化。 Elasticsearch透明地使用这种方法。
对于索引,您可以使用命名约定来展平数据。 Mongodb使用这样的语法。
companies.name: ['google', 'sherwin-williams']
companies.title: ['software engineer', 'web developer']
在这种情况下请注意像
这样的查询<BooleanQuery: +companies.name:google +companies:web developer>
会匹配。如果位置重要,则必须使用更高级的SpanQuery。
答案 1 :(得分:1)
我有同样的问题。我们想在solr复杂的json文档中使用数组和映射进行索引(比您发布的示例复杂得多)。
最后,我修改了JsonLoader类以接受这种docuemnts。它做了什么,它使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'
}
]
微米。
答案 2 :(得分:0)
嵌套的Jsons可以在solr中使用子文档编制索引。我们可以使用Block and join query parsers来查询它。