【问题标题】:Firestore text search containing keyword Flutter包含关键字 Flutter 的 Firestore 文本搜索
【发布时间】:2021-04-22 10:31:57
【问题描述】:

我计划为我的文档的String 名称字段提供全文搜索功能,但根据我所做的研究,似乎无法使用 firestore 搜索文本,然后我想出了解决方案正在创建一个新的数组字段来存储文档中的关键字,像这样

然后我使用 arracVontains 调用它,并将 searchedKeyword 作为用户输入的文本

_firestore
        .collection(itemOrderPath)
        .where("keyword", arrayContains:searchedKeyword)

现在,我很犹豫是否可以这样做(会对我的应用程序产生巨大影响)?还是有更好的方法来做到这一点?谢谢!

【问题讨论】:

标签: firebase flutter google-cloud-firestore full-text-search


【解决方案1】:

我也处于同样的位置,之前,我决定使用 Algolia + Firestore 进行全文搜索

当前流动风险很小:

  1. 需要更多的手动工作。创建/更新
  2. 字符串数据区分大小写
  3. 在这里,您将增加文档的权重。可能会影响性能
  4. 对于单个关键字搜索array-contains 就足够了;但是对于多关键字搜索,您必须使用array-contains-any,但它几乎没有限制。
  5. 等等等等

我尝试了您现在遵循的相同解决方案。但是,由于一些限制,我选择了这个Algolia 解决方案。对我来说,这个解决方案似乎有点贵;但是在初始阶段,我们可以做到这一点。但最后,您必须根据应用程序的要求来决定。

解决方案:https://firebase.google.com/docs/firestore/solutions/search

【讨论】:

  • 谢谢你的回答,但我打算先使用spark plan firestore,它不支持需要使用algolia的云功能?而且我的应用的规模可能没有那么大,用这种方法还可以吗?
  • 用于索引的云功能。如果您不想要它,您仍然可以从您的应用程序索引(http 方式)。 Algolia 提供 10k 免费搜索和索引,对你来说已经足够了。我希望您阅读他们的计划和限制。
  • 另一种解决方案是弹性搜索,如 firestore 文档中所述。但是正如您所说,您的应用使用率并没有那么高,可以使用 Pay per Use 具有足够好的免费积分的模型。
  • @MuthuThavamani String data is case sensitive 您可以在保存数组之前将其小写。 Here you are adding more weight to your document这也是可以避免的,请看我的回复stackoverflow.com/a/65817849/2555999
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 2015-09-05
  • 2018-10-01
  • 1970-01-01
  • 2020-10-11
相关资源
最近更新 更多