我试图在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"
我已经退房了 Deep path query using wildcard as a path
和Search for sub child in firebase database
但它们似乎都适用于搜索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)
})
使用我的查找表我无法弄清楚如何搜索字段,因为它们以数字命名,而且我不能将命名相同的东西。
在我能够将多个关键字与记录相关联的情况下,是否有更好的结构方法?