firebase - 多字段搜索
问题描述
我收集了一些地方:
PLaces:
doc1:
title: "Paris"
category: "Pharmacy"
city: "Paris"
doc2:
title: "Paris"
category: "Pharmacy
city: "New york"
doc3:
title: "Paris"
category: "School
city: "New york"
如果我想搜索名称包含 Paris 的地方,我会执行以下操作:
> db.collection('places')
> .orderBy('title')
> .startAt(['Paris']).endAt(['Paris'+ '\uf8ff']).getDocuements();
这将向我显示所有包含巴黎名称的地方。
但是,我如何能够使用其他条件搜索地点,例如
获取名称为 paris 的 Pharmacy 或 pharmacy paris in city Paris 知道有一个输入字段允许编写搜索关键字
输入搜索示例:
- 《巴黎药房》
- '药房巴黎纽约'
这在 Cloud Firestore 中是否可行?如果没有,还有其他方法可以做到这一点吗?
解决方案
如果您询问是否可以接受单个字符串并使用它跨字段搜索,不,这是不可能的。Firestore 不是文本搜索引擎。
您可以跨字段查询的唯一方法是使用该文档中描述的复合搜索查询。您必须调出要匹配的每个字段,并且每个查询只能有一个范围过滤器(因此您不能将 startAt/EndAt 与多个字段一起使用)。您将需要使用字段的确切值来过滤结果。
如果您想要全文搜索,文档建议将您的数据镜像到实际的文本搜索引擎。
推荐阅读
- list - 从列表中的字典中提取值
- acumatica - 无法从自定义项目浏览器屏幕发布自定义
- r - 在 R 中设置符号对象的子集
- django - 使用 smtp.domain.com 的 Django send_mail 错误(smtplib.SMTPHeloError: (501, b'Syntactically invalid HELO argument(s)'))
- angular - 如何使用 observable 显示没有数据源的角度列表中找不到数据
- apache - 如何防止 apache 在 Docker 中记录健康检查?
- amazon-web-services - 弹性搜索更新 AWS 控制台中的服务软件发布
- php - 如何将刀片内容转换为 PDF?
- python - 如何在 TensorFlow2 中写出这个方程?(4x+2 = 0)
- c - 为什么不 char newWord[45]; 在像 char newWord[45] = ""; 这样的函数的开头有“干净”的值 做?