1

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を使用しています。

4

2 に答える 2

4

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"
      }
    ]
  }
]

ここで使用されている「title」、「content_type」、「comments」のすべてのフィールドをschema.xmlに追加する必要があります。パラメータ「childDocuments」は、solrが処理し、これが子ドキュメントであることを理解するパラメータであり、「content_type」:「parentDocument」は、これが親ドキュメントであることを理解するためのsolrの識別子です。このJsonにインデックスを付けた後、クエリを実行すると

"*":"*"

全部で4つのドキュメントが表示されます。これで、クエリパーサーをブロックして結合することで親または子のドキュメントを取得できます。このクエリを試してください

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
于 2015-05-12T11:44:17.760 に答える
3

いいえ、Solrはそのネストされた構造をサポートしていません。この他の質問も見てください。

于 2012-08-29T14:56:39.257 に答える