Firebase和索引/搜索

Gen*_*sky 27 firebase firebase-realtime-database

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

我假设我需要一些运行查询的额外服务并返回Firebase对象句柄.我可以在某个固定的位置启动这样的服务,但后来我不得不担心它的可用性广告可扩展性.虽然我不希望这个应用程序有太多的流量,但它可以在几千个并发用户中达到峰值.

建筑思想?

Mic*_*uer 29

从长远来看,Firebase会有更高级的查询,所以希望它能直接支持这类事情,而不必做任何特别的事情.在此之前,您有几个选择:

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

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

  • 有关#1的良好实现,请参阅https://github.com/firebase/flashlight它与ElasticSearch集成,以提供Firebase数据的全文搜索功能. (3认同)

归档时间:

查看次数:

11426 次

最近记录:

6 年,7 月 前