【发布时间】:2016-02-25 07:57:31
【问题描述】:
我正在尝试从 Firebase 获取名称中包含给定字符串的所有用户。 例如,如果我有这些用户:
Devid, Andy, Bob
我想获取名称中包含“D”的所有用户,所以我希望结果如下:
Devid, Andy
这是我的 Firebase 目前的结构:
由于 Firebase 区分大小写,我创建了一个包含小写名称的属性 name_。
使用 startAt 和 endAt 我可以获取名称以定义的字符串开头的所有用户
ref.orderByChild("name_").startAt(text).endAt(text+"\uf8ff").on('value', ...);
但这只会给我名称以给定字符串开头的用户,例如,如果文本是“D”,我会得到:
Devid
1) 目前我的查询的意思是,“给我所有 name_ 以给定字符串开头的用户”有没有办法让它意味着“给我所有用户的名字包含给定的字符串”? 编辑:否
Firebase 查询没有类似于全文搜索的功能 运营商。要完成这些,您要么必须集成一个 外部全文搜索引擎,还是搞个很精致的 自定义索引方案。 Firebase and indexing/search
2) 目前我不想拥有服务器端代码,有什么好的和有效的方式来实现自定义索引?
谢谢
【问题讨论】:
-
使用正则表达式?
-
遗憾的是 startAt/endAt 不支持正则表达式
-
使用正则表达式时,不需要使用 startAt/endAt... 这就是重点
-
你是对的,问题是我们只能使用 startAt/endAt/equalsTo 来做查询。这是文档firebase.com/docs/web/guide/…
-
Firebase 查询没有任何类似于全文搜索运算符的功能。要完成这些,您要么必须集成一个外部全文搜索引擎,要么提出一个非常复杂的自定义索引方案。以前有人问过这个问题,所以我会找到一个重复的。
标签: firebase firebase-realtime-database database nosql