使用多字段 Firestore 进行搜索

Search with multi fields firestore

我收集了一些地方:

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 不是文本搜索引擎。

您可以跨字段查询的唯一方法是使用 compound search query,如该文档中所述。您必须调出要匹配的每个字段,并且每个查询只能有一个范围过滤器(因此您不能对多个字段使用 startAt/EndAt)。您将需要使用字段的准确值来过滤结果。

如果要全文搜索,文档推荐mirroring your data to an actual text search engine