java - 如何使用返回最佳结果的多个参数构建 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()`
解决方案
Firestore 没有任何“接近但不完全”或排名搜索。所有约束必须完全匹配,否则文档将不匹配。相反,您需要做的是查询可能符合您的某些要求的每个可能的文档,然后在应用程序中决定哪一个最符合您的要求。
推荐阅读
- php - 每分钟检查一次数据库,然后发送通知
- angular - 以 Angular 6 形式初始化 Square iframe 的问题
- python - 仅当将某些内容添加到列表中时如何打印?
- csv - 从多个 csv 文件创建 libsvm 用于 xgboost 外部内存训练
- r - 将日期列表转换为 R 中的另一种格式?
- regex - 尝试替换记事本++中的一些文本
- python - 在数据帧上迭代 re.split()
- javascript - 在控制台中,如果 html 标签呈紫色闪烁,这是否意味着它正在用 javascript 重新呈现?
- c++ - 包含指向类中方法的指针的结构模板和数组
- konvajs - 如何从组中分离形状?