我试图使用Algolia来扩充我的Firebase支持的App。由于firebase的性质,许多嵌套对象具有唯一的键,因为数据已被展平,并且该键表示数据库中其他地方的其他有趣数据,这些数据不在上载到Algolia的索引中。
像这样的对象的一个例子是:
{
"foo12345": {
"3342523": {
"Body": "Some Text",
"Author": "Bob",
"Last_Updated": 1458071169649
}
}
}
有没有办法在嵌套的唯一Id对象内的数据上设置构面?除了facet之外还有什么方法可以过滤Algolia中键的具体价值吗?
答案 0 :(得分:2)
我认为你不能那样使用它。您需要一个通用路径来访问要搜索的属性或与您的方面一起使用的属性。
如果你理解你的情况(同一个firebase对象中有几个'key'),你可以尝试为每个“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
相关联答案 1 :(得分:2)
如果不了解其父级,则不能在嵌套属性上进行分面。您需要重新格式化记录。
你可以做的是与属性的每个孩子相反的方面:
{
"objectID": 42,
"specs": {
"whatever1": "value1",
"whatever2": "value2"
}
}
将specs
添加到attributesForFaceting
会产生两个方面:
specs.whatever1
specs.whatever2