2

たとえば、recordOne をプロパティ「color」で送信し、プロパティ「price」で送信するとします。次に、セット内の 2 番目のレコードである recordTwo には、プロパティ "price" がありますが、プロパティ "color" はありません。

4

1 に答える 1

4

何が起こるかというと、両方のレコードがインデックス化されます:)

インデックスはスキーマレスであるため、同一の属性を持つレコードのみを同じインデックスにプッシュする義務はありません。

ただし、インデックスの構成によっては、いくつかの影響があります。
indexattributesToIndexパラメータにcolor属性が含まれている場合、recordOneレコードはその属性を使用して検索できますが、 recordTwoレコードは検索できません。

エンジンは、オブジェクトの欠落している属性を無視し、利用可能なものを使用します。これら 2 つのオブジェクトを含むインデックスがあるとします。

[{
  "objectID": "recordOne",
  "name": "Colorful object",
  "color": "green",
  "price": 19.99
},

{
  "objectID": "recordTwo",
  "name": "Colorless object",
  "price": 25
}]

...でattributesToIndex = ['name', 'color'] 、"green" で検索クエリを実行します。

recordOneのみが、color属性に一致する「緑」として返されます。

ここで「オブジェクト」を照会すると、この単語がnameプロパティの両方のレコードに存在するため、両方のレコードが返されます。

これは、Algolia のダッシュボードで実際に自分でテストできます。

  • 新しいインデックスを作成する
  • 「手動で追加」ボタンを使用して両方のレコードを追加します (上記の JSON をコピーするだけです)。
  • 「ランキング」タブのインデックス設定に属性にnamecolorを追加
  • 「参照」タブに戻り、そこでクエリを試してください:)
于 2015-10-31T14:50:51.827 に答える