Firestore:与搜索词匹配或相似的查询名称

Yun*_*yev 3 java android firebase google-cloud-firestore

我在 Firestore 数据库中有一个包含他们名字的用户列表。我想要实现的是让用户能够搜索和找到其他用户。我的问题是:

Query query = db.collection("users").whereEqualTo("name", searchTerm);
FirestoreRecyclerOptions<UserObject> response = new FirestoreRecyclerOptions.Builder<UserObject>()
                .setQuery(query, UserObject.class)
                .build();
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,只有当我完全正确地写出他们的名字和姓氏时,我才能找到用户。但我想要的是获得名称或姓氏相似的用户。而且,用户的姓氏和名字存储在一个字符串变量中。就像在 facebook 中一样,如果你搜索一些名字,它也会显示相似的名字。有没有用 firestore 实现这一目标的好方法?

Ale*_*amo 6

根据官方文档

Cloud Firestore 不支持原生索引或搜索文档中的文本字段。此外,下载整个集合以在客户端搜索字段是不切实际的。

所以我强烈建议你不要为了创建搜索而下载整个集合,不值得。但是为了稍微好一点的搜索,我建议您使用以下查询:

Query query = db.collection("users").startAt(searchText).endAt(searchText+ "\uf8ff");
Run Code Online (Sandbox Code Playgroud)

如果此查询不是您要搜索的内容,我建议您使用Algolia搜索,Firebase 也推荐使用它。我也推荐你看这个视频