【问题标题】:How to filter multiple fields in Firestore Android [duplicate]如何在 Firestore Android 中过滤多个字段 [重复]
【发布时间】:2021-11-02 09:55:12
【问题描述】:

我需要从 Firestore 集合中搜索和过滤。下面给出了一个名为“产品”的示例集合。

[
  {
    "id": 1,
    "name": "product 1",
    "description": "product description 1",
    "categoryId": 35,
    "categoryName": "Category 123",
    .......
  },
    {
    "id": 2,
    "name": "product 2",
    "description": "product description 2",
    "categoryId": 44,
    "categoryName": "Category 72",
    .......
  }
]

例如,如果我输入了搜索文本,我需要来自 Firestore 集合的结果,其中任何字段都包含搜索文本的全部或部分部分。此外,每种产品都包含制造日期和有效期。所以我需要在日期范围之间进行过滤。

【问题讨论】:

    标签: android firebase kotlin google-cloud-firestore nosql


    【解决方案1】:

    部分文本搜索不是 Firestore 支持的功能,它使用直接比较值。

    您必须通过第三方 API(如 Algolia)使用云功能自行实现自定义搜索功能,或者创建支持分解字母组合的字符串中的所有文本的分解 - 但这会不必要地增加阅读量,我不建议这样做它。

    【讨论】:

    • 我认为最好切换到 AWS 并为所欲为。由于没有加入,我必须使用云功能执行一些额外的任务。现在对于这个简单的过滤,我不得不再次依赖另一个服务。在这种情况下,它是第三方。
    • 这完全取决于您,文本搜索是一个多方面的概念,可以分为多种解决方案。并且在任何项目中使用多种解决方案并不少见。 Firebase 是一个 Restful SAAS,因此没有任何 CPU 或服务器开销来进行复杂的算法排序。这就是它有免费套餐的原因。
    • 如果我安装 Algolia,是否会发生任何额外的读取。还有,会不会有延误
    • Algolia 是它自己的解决方案,它会返回文档 ID 供您获取,这会带来延迟,但速度很快,并且对大多数用户来说并不明显。读取本身是通过 algolia 完成的,而不是 firebase
    猜你喜欢
    • 2019-01-08
    • 2021-12-08
    • 2013-08-06
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    相关资源
    最近更新 更多