首页 > 解决方案 > 如何使用返回最佳结果的多个参数构建 Firestore 查询?

问题描述

我正在构建一个 Android 应用程序,允许用户根据多个参数(宗教、发型、工作、出身、年龄等)搜索其他人。

我使用Firestore作为数据库。该查询应该在用户的集合中搜索包含输入的所有关键字尽可能多的文档(如果没有文档包含所有关键字)。

问题是,如果没有文档与输入完美匹配(对于 exp:

用户寻找: 天主教徒, 短发, 舞者, 美国人, 38,

最好的结果: 天主教徒, 短发, 舞者, 法国人, 38

查询不返回任何值。

有人知道解决方法吗?谢谢

这是我的查询示例:

`Query query = FirebaseFirestore.getInstance().collection("users")
                .whereEqualTo("userAge", 38)
                .whereEqualTo("userOrigin", "American")
                .whereEqualTo("userJob", "Dancer")
                .whereEqualTo("userHairStyle", "Short hair")
                .get()`  

标签: javaandroidfirebasegoogle-cloud-firestorenosql

解决方案


Firestore 没有任何“接近但不完全”或排名搜索。所有约束必须完全匹配,否则文档将不匹配。相反,您需要做的是查询可能符合您的某些要求的每个可能的文档,然后在应用程序中决定哪一个最符合您的要求。


推荐阅读