2

例如,如果我发送带有属性“color”但带有属性“price”的recordOne。然后集合中的第二条记录recordTwo 具有属性“price”但没有属性“color”。

4

1 回答 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 回答