ios - 在 Firebase 中执行多字段关键字搜索
问题描述
我正在尝试在 Swift 和 Firebase 中创建关键字搜索功能。
我的主要记录存储在这样的结构中......
ads
adUID
name: "beast of a truck"
category: "vehicles"
keyword: "ford"
adUID
name: "lil red go car"
category: "vehicles"
keyword: "ford"
我已经创建了一个具有这样结构的查找/引用“表”......
adKeywords
adUID
0: "black"
1: "ford"
2: "F150"
3: "4x4"
adUID
0: "red"
1: "ford"
2: "Escape"
3: "AWD"
我已经检查了 使用通配符作为路径的深度路径查询
但它们似乎都适用于始终具有相同名称的搜索 1 字段。
就我而言,我想搜索 adKeywords 中的任何字段。
我试过做以下省略queryOrdered
let ref = Database.database().reference()
let keywordQuery = ref.child("adKeywords").queryEqual(toValue: searchTerm)
keywordQuery.observeSingleEvent(of: .value, with: { snapshot in
print(snapshot)
})
如果我只是在原始广告记录中放置一个名为关键字的字段并在其中包含一个单词,我可以搜索它,但我希望能够将一个广告与多个关键字相关联
let ref = Database.database().reference()
let keywordQuery = ref.child("ads").queryOrdered(byChild: "keyword").queryEqual(toValue: searchTerm)
keywordQuery.observeSingleEvent(of: .value, with: { snapshot in
print(snapshot)
})
使用我的查找表,我无法弄清楚如何搜索这些字段,因为它们是用数字命名的,而且我不能命名相同的东西。
有没有更好的方法来构建这个我可以将多个关键字与记录相关联?
解决方案
推荐阅读
- reactjs - 异步 redux 操作测试始终返回待处理
- python - 遍历 Jupyther Notebook (Python) 中的输入文件
- sql - 如何标记用户是否至少遵循了一次条件?
- windows-10-sdk - Windows 10 SDK 挂起并且不会继续
- nginx - SPA 路由器如何区分前端路由和后端路由?
- kentico - 如何在 Kentico Kontent Management Api v2 上创建组选项卡
- python - 标签显示不正确
- xamarin - 如何使用 FFImageLoading 通过 Xamarin Forms 5 成功缓存和加载 svg 资源
- javascript - MongoDB 仅部分更新
- java - 如何在 Android 中执行一项任务,而无需打开该活动或离开该活动?