我想在Firebase
的用户名中实现前缀搜索。通过前缀搜索,我的意思是在执行查询foo
后,返回带有prefix foo
的用户名。这样的结果可能会返回存储在数据中的prefix foo
或只有special subset
的所有用户名,但重要的是,如果存在此类用户名,则必须包含与精确查询匹配的用户名。
由于Firebase
数据结构只是一个自定义可设计树,我的第一个想法是在所有用户名集上实现trie data structure
。
更详细地说,从根到trie的任何节点的每条路径对应于某些现有用户名的唯一前缀。然后在每个节点中,除了匹配此节点的用户名(如果存在此用户名)之外,我们还可以明确地存储一些用户名的子集,其前缀对应于此节点。这允许我们非常快速地返回具有给定前缀的所有用户名的子集。
添加或删除用户名时,可以轻松更新此类树。我的想法是,存储在节点中的用户名子集可以根据一些外部数据定期更新,这样可以使用某种度量返回更有价值的结果。
我想知道是否有其他推荐的方法可以达到目标,尤其是Firebase
?任何关于上述方法的意见也表示赞赏。
答案 0 :(得分:1)
直到现在firebase没有任何搜索API,例如" WHERE foo LIKE'%bar%'?",但你可以使用{{3}基于ElasticSearch,是一个非常强大的文档存储和索引工具。但是,它的核心是一个非常简单的搜索功能,它几乎与Firebase即插即用兼容。
查看firebase的官方博客文章,了解如何将Elastic Search与firebase集成 Lucene