solr索引嵌套文档

时间:2012-08-28 14:15:53

标签: xml solr indexing

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进行这个项目。

2 个答案:

答案 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