首页 > 解决方案 > 多字段搜索

问题描述

我收集了一些地方:

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 中是否可行?如果没有,还有其他方法可以做到这一点吗?

标签: firebasefluttergoogle-cloud-firestorefull-text-searchalgolia

解决方案


如果您询问是否可以接受单个字符串并使用它跨字段搜索,不,这是不可能的。Firestore 不是文本搜索引擎。

您可以跨字段查询的唯一方法是使用该文档中描述的复合搜索查询。您必须调出要匹配的每个字段,并且每个查询只能有一个范围过滤器(因此您不能将 startAt/EndAt 与多个字段一起使用)。您将需要使用字段的确切值来过滤结果。

如果您想要全文搜索,文档建议将您的数据镜像到实际的文本搜索引擎


推荐阅读