例如,如果我发送带有属性“color”但带有属性“price”的recordOne。然后集合中的第二条记录recordTwo 具有属性“price”但没有属性“color”。
问问题
216 次
1 回答
4
发生的事情是两条记录都被索引了:)
索引是无模式的,因此您没有义务仅将具有相同属性的记录推送到同一索引。
但是,它会产生一些后果,具体取决于您的索引配置。
如果您的 indexattributesToIndex
参数包含该color
属性,那么您的recordOne记录将可以使用该属性进行搜索,而recordTwo记录则不会。
引擎将忽略对象上缺少的属性并使用可用的属性。假设您有一个包含这两个对象的索引:
[{
"objectID": "recordOne",
"name": "Colorful object",
"color": "green",
"price": 19.99
},
{
"objectID": "recordTwo",
"name": "Colorless object",
"price": 25
}]
使用attributesToIndex = ['name', 'color']
... 并使用“green”执行搜索查询。
只有recordOne将作为color
属性中匹配的“绿色”返回。
如果您现在查询“object”,则将返回两条记录,因为该词出现在name
属性的两条记录中。
您实际上可以在 Algolia 的仪表板中自行测试!
- 创建新索引
- 使用“手动添加”按钮添加两条记录(只需复制上面的 JSON)
- 在“排名”选项卡中添加
name
和到索引color
设置的属性 - 返回“浏览”选项卡并在那里尝试您的查询:)
于 2015-10-31T14:50:51.827 回答