android - 如何构建 Firebase 中自动完成搜索的数据

标签 android ios firebase google-cloud-firestore google-cloud-functions

我正在创建一个社交网络应用,我需要找到一种适当的方法来构建我的 Cloud Firestore 数据库以存储用户。在客户端,应用程序应该提供一个搜索栏来查找和添加其他用户。理想情况下,当您在此搜索栏中键入字符时,当您在搜索栏中实时输入更多字符时,应显示并更新名称以输入字符开头的用户(即实现自动完成)。因此,我试图找到将用户存储到 Firestore 上的最佳方法,以促进此查询过程。

我考虑过将每个用户的完整信息存储在用户集合中的单独文档中(即每个用户都有一个文档)。如果我像这样实现,我可以通过 Google Cloud Functions 使用内置的 Firestore 查询。但是,每次进行查询时,内置的 Firestore 查询都会扫描所有用户文档(即,如果用户数量变大,每个用户的文档将非常昂贵且效率低下)。

为了更加经济和高效,我可以有一个单独的集合(例如指针集合),其中完整用户文档(在用户集合中)的每个用户名和 ID 都分组在按字母顺序组织的文档中。例如,我可以为所有以“a”开头的用户名创建一个文档,其中该文档的字段将向用户集合指示名称和文档 ID(对于所有其他字母也类似)。一旦,给定信件的任何这些文档都已满(达到 Google 决定的限制),我可以简单地向其中添加一个子集合来存储其他用户名和 ID,例如,通过根据用户名的前两个字符(例如“aa”、“ab”、“ac”等)。

因此,我可以使用指针集合中的这些文档来快速地将以给定字符开头的用户名显示到搜索栏上,一旦从中选择了特定用户,我就可以使用文档 ID 来检索用户集合中的完整用户文档(因此,我不需要扫描所有用户文档)。

我想问这种类型的结构化数据对于所提出的问题是否有意义?还有更好的方法吗?

提前致谢!

最佳答案

Firestore 不支持击键搜索,您需要找到替代的第 3 方,例如 AlgoliaApp Engine Search

两者都有大量的免费层,您甚至不需要以复杂的方式排列您的收藏,看看this article让您开始使用 this specific安卓API。

对于您提到的用户数量,免费套餐应该适合您的情况,不会有任何问题。

关于android - 如何构建 Firebase 中自动完成搜索的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56810288/

相关文章:

java - 如何获取条码扫描仪android的 Activity 结果?

android - 为 ListView 设置字体

ios - 按照维护顺序快速解析 json

firebase - 如何在Firebase云函数中调用refFromURL

android - apk 文件和 dex 文件不是由 eclipse 生成的

java - 如何更改微调器选择的文本

ios - 获取 SCNText Geometry 的宽度/高度

iphone - 在游戏中心重新连接玩家

android - Firebase 身份验证和数据库加密

android - 更新到新的 Firebase 后出现异常 java.lang.NoClassDefFoundError : com. google.firebase.FirebaseOptions