solr是否支持嵌套文档?是否有更好的方法来实现这种文档?
<doc>
<field name="name">Mr. Test</field>
<field name="case">
<field name="link">http://foo.com</field>
<field name="date">1-2-1234</filed>
<field name="title">My title</filed>
</field>
<field name="case">
<field name="link">http://foo.com/2/</field>
<field name="date">1-2-1234</filed>
<field name="title">My title 2</filed>
</field>
</doc>
我所拥有的是多个案件的一部分。这种形式的模式是否与solr合法?不同的人也可以是同一案件的一部分。所以它看起来像关系数据库的任务,但我正在使用solr进行这个项目。
答案 0 :(得分:3)
不,Solr不支持嵌套结构。也请查看this other question。
答案 1 :(得分:2)
较新版本的Solr支持嵌套文档
索引这个Json
[
{
"id": "1",
"title": "Solr adds block join support",
"content_type": "parentDocument",
"_childDocuments_": [
{
"id": "2",
"comments": "SolrCloud supports it too!"
}
]
},
{
"id": "3",
"title": "Lucene and Solr 4.5 is out",
"content_type": "parentDocument",
"_childDocuments_": [
{
"id": "4",
"comments": "Lots of new features"
}
]
}
]
在schema.xml中,你必须添加在这里使用的所有字段,即&#34; title&#34;,&#34; content_type&#34;,&#34; comments&#34;。参数&#34; childDocuments &#34; solr是一个参数,它理解这是一个子文档和&#34; content_type&#34;:&#34; parentDocument&#34;是solr的标识符,以了解这是父文档。在我们查询
之后索引这个Json"*":"*"
我们应该看到4个文件。现在我们可以在Block and join query parsers的帮助下获取父文档或子文档。试试这个查询
http://localhost:8983/solr/collection_test/select?q={!child%20of=%22content_type:parentDocument%22}title:lucene
和这一个
http://localhost:8983/solr/collection_test/select?q={!parent%20which=%22content_type:parentDocument%22}comments:SolrCloud