多字段搜索firestore

问题描述 投票:0回答:1

我有一些地方的集合,如果我想搜索名字中包含巴黎的地方,我会这样做:

PLaces:
  doc1:
   title:    "Paris"
   category: "Pharmacy"
   city:      "Paris"
 doc2:
   title:     "Paris"
   category:   "Pharmacy
   city: "New york"

  doc3:
   title:     "Paris"
   category:   "School
   city: "New york"

如果我想搜索那些名字中包含巴黎的地方 我会做以下的操作

>  db.collection('places')
>     .orderBy('title')
>     .startAt(['Paris']).endAt(['Paris'+ '\uf8ff']).getDocuements();

这将显示我所有的地方, 包含名称巴黎。

然而,我如何能够搜索其他标准的地方,如

得到只是药店与名称巴黎或药店巴黎在城市巴黎知道,有一个输入字段,允许写搜索关键字。

输入的例子 搜索 。

  • 巴黎药房
  • "巴黎药房纽约

在云火库中是否可以这样做?如果不可以,是否有其他方法可以做到这一点?

firebase flutter google-cloud-firestore full-text-search algolia
1个回答
0
投票

如果你问的是是否可以接受一个单一的字符串,并且用它进行跨领域搜索,不,这是不可能的。 Firestore不是一个文本搜索引擎。

你可以跨字段查询的唯一方法是用一个 复合查询 中描述的那样。 你必须调用你想匹配的每个字段,而且每个查询只能有一个范围过滤器(所以你不能对多个字段使用startAtEndAt)。 你需要使用字段的精确值来过滤结果。

如果你想进行全文搜索,文档中推荐你使用以下方法 将您的数据镜像到实际的文本搜索引擎上.

© www.soinside.com 2019 - 2024. All rights reserved.