3 回答
TA贡献1796条经验 获得超7个赞
从长远来看,Firebase将具有更高级的查询,因此希望它可以直接支持此类操作,而您无需执行任何特殊操作。在此之前,您有几种选择:
编写服务器代码以处理搜索。 正如您提到的,最简单的方法是运行一些负责索引/搜索的服务器代码。Firebase具有Node.JS客户端,因此这是将服务连接到Firebase的简便方法。所有数据传输仍可能通过Firebase进行,但是您将编写一个Node.JS服务,该服务在Firebase中的某个指定位置监视客户端“搜索请求”,然后通过将结果集写回Firebase来“响应”。客户消费。
将索引存储在Firebase中,客户端会自动对其进行更新。 如果您想变得真正聪明,则可以尝试实施一种无服务器方案,在该方案中,客户端在写入数据时会自动为其索引。因此,全文搜索的索引将存储在Firebase中,并且在客户端写入时集合中的一个新项目,它将负责适当地更新索引。为了进行搜索,客户端将直接使用索引来构建结果集。对于要为Firebase中存储的复杂对象的一个字段建立索引的简单情况,这实际上是很有意义的,但是对于全文搜索而言,这可能会很粗糙。:-)
将索引存储在Firebase中,并使用服务器代码对其进行更新。您可以尝试一种混合方法,将索引存储在Firebase中,并由客户端直接用于搜索,但是要让客户端更新索引,而不是让客户端将索引添加到集合中时就更新索引的服务器代码。这样,当服务器关闭时,客户端仍然可以搜索数据。在服务器追上索引之前,它们可能会获得过时的结果。
在Firebase进行更高级的查询之前,如果您愿意运行一些服务器代码,那么#1可能是最好的选择。:-)
TA贡献1851条经验 获得超5个赞
Google当前进行全文搜索的方法似乎正在与Algolia或BigQuery以及带有Cloud Functions for Firebase的BigQuery进行同步。
这是Firebase的Algolia全文搜索集成示例,其BigQuery集成示例可以扩展为支持完整搜索。
TA贡献1900条经验 获得超5个赞
只需重新阅读您的评论,即您的数据是静态的即可。在这种情况下,不需要选择选项#2,而使选项#3变得更容易。您仍然需要弄清楚如何构建全文搜索索引,将其存储在Firebase中,并让客户端直接查询它,但是应该完全可行。
- 3 回答
- 0 关注
- 494 浏览
添加回答
举报