gpt4 book ai didi

Firebase 和索引/搜索

转载 作者:行者123 更新时间:2023-12-02 17:19:18 25 4
gpt4 key购买 nike

我正在考虑将 Firebase 用于一个应用程序,该应用程序应该让人们对数千个对象的集合使用全文搜索。我喜欢提供仅客户端应用程序的想法(不必担心托管数据),但我不确定如何处理搜索。数据将是静态的,因此索引本身并不是什么大问题。

我假设我需要一些额外的服务来运行查询并返回 Firebase 对象句柄。我可以在某个固定位置启动这样的服务,但随后我必须担心它的可用性和可扩展性。虽然我预计该应用程序的流量不会太多,但它可以在几千个并发用户时达到峰值。

架构思想?

最佳答案

从长远来看,Firebase 可能会有更高级的查询,因此希望它能够直接支持此类事情,而无需您执行任何特殊操作。在那之前,您有几个选择:

  1. 编写服务器代码来处理搜索。最简单的方法是运行一些负责索引/搜索的服务器代码,正如您所提到的。 Firebase 有一个 Node.JS 客户端,因此这将是一种将服务连接到 Firebase 的简单方法。所有数据传输仍然可以通过 Firebase 进行,但您可以编写一个 Node.JS 服务,该服务在 Firebase 中的某个指定位置监视客户端“搜索请求”,然后通过将结果集写回 Firebase 来“响应”,以便客户端消费。
  2. 将索引存储在 Firebase 中,并让客户端自动更新索引。如果您想变得更聪明,可以尝试实现无服务器方案,让客户端在写入数据时自动为其建立索引。因此,全文搜索的索引将存储在 Firebase 中,当客户端将新项目写入集合时,它将负责相应地更新索引。为了进行搜索,客户端将直接使用索引来构建结果集。对于您想要对存储在 Firebase 中的复杂对象的一个​​字段进行索引的简单情况,这实际上很有意义,但对于全文搜索,这可能会非常粗糙。 :-)
  3. 将索引存储在 Firebase 中,并由服务器代码对其进行更新。您可以尝试一种混合方法,将索引存储在 Firebase 中并直接由客户端用于执行搜索,而不是让客户端进行更新索引,只要将新项目添加到集合中,您就会拥有更新索引的服务器代码。这样,当您的服务器关闭时,客户端仍然可以搜索数据。在您的服务器 catch 索引之前,他们可能会得到过时的结果。

在 Firebase 具有更高级的查询功能之前,如果您愿意运行一些服务器代码,#1 可能是您的最佳选择。 :-)

关于Firebase 和索引/搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10559191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com