たとえば、recordOne をプロパティ「color」で送信し、プロパティ「price」で送信するとします。次に、セット内の 2 番目のレコードである recordTwo には、プロパティ "price" がありますが、プロパティ "color" はありません。
質問する
216 次
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 をコピーするだけです)。
- 「ランキング」タブのインデックス設定に属性に
name
とcolor
を追加 - 「参照」タブに戻り、そこでクエリを試してください:)
于 2015-10-31T14:50:51.827 に答える