Firebase 中的搜索查询

Posted

技术标签:

【中文标题】Firebase 中的搜索查询【英文标题】:Search Query In Firebase 【发布时间】:2017-11-08 11:27:30 【问题描述】:

从客户端我如何通过 businessName 在 firebase 中搜索所有记录,就像我写 ka 时一样,然后会向我显示 kashif、kaleem、相关数据。

【问题讨论】:

您可以查询startingAt("ka").endingAt("ka\uf8ff"") 会返回所有以ka开头的企业;kaschif、kaleem等 \uf8ff 组件是 unicode 表中的高位字符,因此它本质上是查询开头“ka”和结尾“ka”+高位 unicode 字符。它为查找以特定字符串开头的单词提供了一些灵活性。子字符串搜索有点复杂,但如果它们是单个单词,可以通过 brute force 完成,或者如果您希望更大的字符串具有很大的灵活性 ElasticSearch 【参考方案1】:

很遗憾,Firebase 不支持此功能(还没有?)。您必须下载所有数据并制作自己的本地搜索功能。 Firestore 改进了 Firebase 的查询能力,但只是一点点。总而言之,查询能力是 Firebase 的致命弱点。

【讨论】:

这个答案不准确。您可以查询startingAt("ka").endingAt("ka\uf8ff""),这将返回所有以ka; kaschif, kaleem 等开头的业务。另外,请参阅this answer 了解其他一些选项。 @Jay wow,你的解决方案奏效了,你能解释一下\uf8ff,这是表示正则表达式吗?此外,此解决方案仅在字母从一开始就匹配时才有效。就像我写'u'一样,它不会搜索JunaidQumber...

以上是关于Firebase 中的搜索查询的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在不使用子项的情况下使 Firebase 搜索查询不区分大小写? [复制]

Firebase 实时数据库在查询之间按单词搜索?

Flutter Firebase - 搜索包含字符串的文档

处理由于 Firebase 查询中的高元素计数而导致的内存使用情况

处理由于 Firebase 查询中的高元素计数而导致的内存使用情况

在 Firebase 中搜索时如何执行 OR 查询?