将 Algolia 与具有唯一键的嵌套对象一起使用

Using Algolia with nested object that have unique keys

我正在尝试使用 Algolia 来增强我的 Firebase 支持的应用程序。由于 firebase 的性质,许多嵌套对象具有唯一的键,因为数据已被扁平化,并且该键代表数据库其他地方的其他有趣数据,这些数据不在上传到 Algolia 的索引中。

这样的对象的一个​​例子是:

{
"foo12345": {
    "3342523": {
      "Body": "Some Text",
      "Author": "Bob",
      "Last_Updated": 1458071169649
    }
  }
}

有没有办法在嵌套的唯一 Id 对象内的数据上设置分面?除了构面之外,还有什么方法可以过滤 Algolia 中键的特定值吗?

我认为你不能那样使用它。您需要一个公共路径来访问您想要使其可搜索或与您的方面一起使用的属性。

如果很好地理解你的情况(同一个 firebase 对象中的多个 'keys'),你可以尝试为每个 "key" 创建一个记录并添加一个属性来引用你的 firebase ID(这样你稍后将能够再次对它们进行分组)

所以你的记录应该是这样的:

  { "objectID": "3342523",
    "firebaseKey": "foo12345",
    "Body": "Some Text",
    "Author": "Bob",
    "Last_Updated": 1458071169649
  }

我推荐此资源以帮助您将 Firebase 数据与 algolia 连接起来 https://www.algolia.com/doc/tutorials/firebase-algolia

不,您不能在不知道其父级的情况下对嵌套属性进行分面。您需要重新格式化您的记录。

你可以做的是相反的,对一个属性的每个子元素进行分面:

{
  "objectID": 42,
  "specs": {
     "whatever1": "value1",
     "whatever2": "value2"
  }
}

specs 添加到您的 attributesForFaceting 将导致两个方面:

  • specs.whatever1
  • specs.whatever2