java - Firestore : Query names that match or similar to the searched term

标签 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();

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

最佳答案

根据 official documentation :

Cloud Firestore doesn't support native indexing or search for text fields in documents. Additionally, downloading an entire collection to search for fields client-side isn't practical.

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

Query query = db.collection("users").startAt(searchText).endAt(searchText+ "\uf8ff");

如果此查询不是您要搜索的内容,我建议您使用 Algolia搜索,这也是 Firebase 推荐的。我还建议您查看此 video .

关于java - Firestore : Query names that match or similar to the searched term,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49471466/

相关文章:

javascript - 在 Firebase 的实时数据库中, `equalTo(arg)` 是否仅在 arg 是对象时才有效?

android - Flutter:应用程序在热重载后不断回到初始路线

java - Java 方法的阻塞和解除阻塞

java - JUnit&Mockito : how to inject field values to Spring component?

java - 转换日期时出错 : Unparseable date in JAVA

android - Android 版特拉维斯 CI

Android gradle - 具有不同风格的调试和发布资源

java - 如何在 Struts 1.2 中验证对 JSP 页面的请求

android - 布局边距中的负像素

javascript - 使用 Firebase-GeoFire 获取用户附近的餐馆列表