为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase和索引/搜索

Firebase和索引/搜索

qq_遁去的一_1 2019-10-10 16:51:51
我正在考虑将Firebase用于应该使人们在数千个对象的集合上使用全文本搜索的应用程序。我喜欢交付仅客户端应用程序的想法(不必担心托管数据),但是我不确定如何处理搜索。数据将是静态的,因此索引本身并不重要。我假设我将需要一些额外的服务来运行查询并返回Firebase对象句柄。我可以在某个固定位置启动此类服务,但随后我不得不担心其可用性和广告可伸缩性。尽管我预计该应用不会带来太多流量,但它可能会达到数千个并发用户的峰值。建筑思想?
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

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

  1. 编写服务器代码以处理搜索。 正如您提到的,最简单的方法是运行一些负责索引/搜索的服务器代码。Firebase具有Node.JS客户端,因此这是将服务连接到Firebase的简便方法。所有数据传输仍可能通过Firebase进行,但是您将编写一个Node.JS服务,该服务在Firebase中的某个指定位置监视客户端“搜索请求”,然后通过将结果集写回Firebase来“响应”。客户消费。

  2. 将索引存储在Firebase中,客户端会自动对其进行更新。 如果您想变得真正聪明,则可以尝试实施一种无服务器方案,在该方案中,客户端在写入数据时会自动为其索引。因此,全文搜索的索引将存储在Firebase中,并且在客户端写入时集合中的一个新项目,它将负责适当地更新索引。为了进行搜索,客户端将直接使用索引来构建结果集。对于要为Firebase中存储的复杂对象的一个字段建立索引的简单情况,这实际上是很有意义的,但是对于全文搜索而言,这可能会很粗糙。:-)

  3. 将索引存储在Firebase中,并使用服务器代码对其进行更新。您可以尝试一种混合方法,将索引存储在Firebase中,并由客户端直接用于搜索,但是要让客户端更新索引,而不是让客户端将索引添加到集合中时就更新索引的服务器代码。这样,当服务器关闭时,客户端仍然可以搜索数据。在服务器追上索引之前,它们可能会获得过时的结果。

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


查看完整回答
反对 回复 2019-10-10
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

Google当前进行全文搜索的方法似乎正在与Algolia或BigQuery以及带有Cloud Functions for Firebase的BigQuery进行同步。


这是Firebase的Algolia全文搜索集成示例,其BigQuery集成示例可以扩展为支持完整搜索。


查看完整回答
反对 回复 2019-10-10
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

只需重新阅读您的评论,即您的数据是静态的即可。在这种情况下,不需要选择选项#2,而使选项#3变得更容易。您仍然需要弄清楚如何构建全文搜索索引,将其存储在Firebase中,并让客户端直接查询它,但是应该完全可行。

查看完整回答
反对 回复 2019-10-10
  • 3 回答
  • 0 关注
  • 494 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信