1

次の構造でドキュメントを検索用にマップする方法について、私は途方に暮れています。

{
  "_id": "007ff234cb2248",
  "ids": {
    "source1": "123",
    "source2": "456",
    "source3": "789"
  }
  "names": [
    {"en":"Example"}, 
    {"fr":"exemple"}, 
    {"es":"ejemplo"},
    {"de":"Beispiel"}
  ],
  "children" : [
    {
      "ids": {
        "source1": "CXXIII",
        "source2": "CDLVI",
        "source3": "DCCLXXXIX",
      }
      names: [
        {"en":"Example Child"}, 
        {"fr":"exemple enfant"}, 
        {"es":"Ejemplo niño"},
        {"de":"Beispiel Kindes"}
      ]
    }
  ],
  "relatives": {
    // Typically no "ids" at this level.
    "relation": 'uncle',
    "children": [
      {
        "ids": {
          "source1": "0x7B",
          "source2": "0x1C8",
          "source3": "0x315"
        },
        "names": [
          {"en":"Example Cousin"}, 
          {"fr":"exemple cousine"}, 
          {"es":"Ejemplo primo"},
          {"de":"Beispiel Cousin"}
        ]
      }
    ]
  }
}

childオブジェクトは、セクションに直接表示されるか、ドキュメントに(この場合はいとこと)childrenとしてさらにネストされます。uncle.childrenIDs フィールドは、レベル 1 (ルート)、レベル 2 (子供と叔父)、およびレベル 3 (いとこ) に共通であり、命名構造もレベル 1 と 3 に共通です。

私のユースケースは、ID (ネストされたオブジェクト) をプレフィックスと ID 全体で検索できるようにすることです。また、(まだ定義されていない) 一連のアナライザー ルールに従って、子の名前を検索できるようにします。

これらを有用な方法でマッピングする方法を見つけることができませんでした。名前とドキュメント ルートの間に余分なレベルのマッピングがあるためids、 とに同じ手法を使用してもあまり成功するとは思えません。names

mappableであることさえ確信が持てません。私は少なくとも原則idsとして、 は用語としてマッピング可能であるべきだと考えていnamesます。

私は途方に暮れており、ドキュメントはこのレベルの複雑なマッピングのようなものをカバーしていないようです。

ドキュメントは CouchDB 川からのものであるため、ドキュメントの制御を制限 (読み取り: いいえ) しており、上流のアプリケーションは既にこの形式に依存しているため、実際に変更することはできませ

次の疑似条件で検索できるようにしたいと考えています。これらはすべて一致する必要があります。

  • ID:"123"
  • ソースごとの ID (疑似言語でこれをマークアップする最善の方法がわかりません)
  • ID プレフィックス:"CDL"
  • 名前: "Example""Example Child"
  • ローカライズされた名前 (これを疑似マークアップする最善の方法さえ知りません!

トークン化と分析の詳細は、少なくともマッピング方法を知っていれば、自分で理解できます

  • オブジェクト プロパティのキーと値の両方が重要な場合のオブジェクト
  • キーと値が重要な場合の列挙可能なオブジェクト。
4

1 に答える 1

1

ID からその子へのマッピングが 1 対多の場合、フィールドは複数の値を持つことができるため、子の名前をフィールドに格納できます。各ドキュメントには、IDフィールド、場合によっては関係フィールド、および 0 個以上のフィールドがあります。

于 2013-01-07T12:00:45.300 に答える