首页 > 解决方案 > 在 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"

我已经检查了 使用通配符作为路径的深度路径查询

在 firebase 数据库中搜索子子项

但它们似乎都适用于始终具有相同名称的搜索 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)
})

使用我的查找表,我无法弄清楚如何搜索这些字段,因为它们是用数字命名的,而且我不能命名相同的东西。

有没有更好的方法来构建这个我可以将多个关键字与记录相关联?

标签: iosswiftfirebase-realtime-database

解决方案


推荐阅读