当前位置: 首页 > 知识库问答 >
问题:

使用多字段firestore搜索

权浩阔
2023-03-14
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();

这样我就能看到所有有巴黎这个名字的地方。

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

    null

在Cloud Firestore中这甚至是可能的吗?如果没有的话,有没有其他方法可以做到这一点?

共有1个答案

计阳泽
2023-03-14

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

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

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

 类似资料:
  • 我有一个endpoint,我正在将它代理到ElasticSearchAPI中,以进行简单的用户搜索。 有关这些参数的一些详细信息如下 所有参数都是可选的 昵称可以作为全文搜索进行搜索(即'myUser'将返回'myUsername') 电子邮件必须完全匹配 名称可以搜索为每个令牌的全文搜索(即'john'将返回'John Smith') ElasticSearch调用应将参数集体视为AND'd。

  • 我在使用Java搜索MongoDB中的ISODate字段时遇到麻烦。我想找到精确匹配的日期。 下面是我如何查询第一个集合并获取ISODate字段“Timestamp”。一旦我得到这个日期,我想搜索另一个具有相同“Timestamp”值的集合。 。。。 我正在格式化ISODate,因为它以我想要搜索的不同格式返回我的日期。因此,我将其转换为这种模式“yyyy-MM-dd HH: mm: ss” 我找

  • 你知道我如何使用FireStore填充文档上的引用字段吗?

  • 如何告诉Elasticsearch在按术语搜索时排除某个字段? 当一个普通用户搜索摩托车时,什么都不应该返回,但如果他们搜索史密斯,这两个都应该返回。 有能力搜索认证字段的用户如果搜索摩托车将返回标记,如果搜索史密斯将返回标记。

  • 我需要在我的应用程序中添加搜索栏。搜索将按名和姓进行搜索。我不知道如何编写elastcsearch查询。名字和姓氏是两个分开的字段。我是个新手。 例:名:约翰,姓:约书亚 搜索栏字符串为上层结果:约翰·乔·约翰·乔·约翰·乔·乔·约翰·约书亚·约翰·约书亚·乔...

  • 我在我的应用程序中使用Hibernate搜索。其中一个子集合映射为IndexeDemBedded。子对象有两个字段,一个是id,另一个是date(使用date resoultion到毫秒)。当我搜索ID=1(或某个值)并且date等于另一个值时,我会得到第一个和第二个匹配的所有情况的结果。我只想在同一个孩子中获得两个字段匹配的记录,但我在不同的孩子中获得匹配,结果会高得多。下面是代码片段 主类是用