gpt4 book ai didi

autocomplete - 使用Firebase自动完成

转载 作者:行者123 更新时间:2023-12-03 14:45:35 25 4
gpt4 key购买 nike

如何使用Firebase进行基本的自动完成/文本预览?

例如,假设有一个由Firebase支持的博客,博客作者可以在其中用标签标记帖子。由于博客作者正在标记新帖子,因此如果他们可以看到与他们输入的前几次按键匹配的所有当前存在的标签,将很有帮助。因此,如果“博客”,“黑色”,“炽热的鞍座”和“牛头犬”是标签,则如果用户键入“ bl”,则它们将获得前三个,而不是“牛头犬”。

我最初的想法是我们可以使用标签的优先级来设置标签,并使用startAt,这样我们的查询将类似于:

fb.child('tags').startAt('bl').limitToFirst(5).once('value', function(snap) {
console.log(snap.val())
});


但这也将“斗牛犬”作为结果之一返回(不是世界末日,但也不是最好的)。使用startAt('bl')。endAt('bl')不返回任何结果。还有另一种方法可以做到这一点吗?

(我知道一个选择是,这是我们可以使用诸如ElasticSearch之类的搜索服务器的功能,请参见 https://www.firebase.com/blog/2014-01-02-queries-part-two.html,但我希望尽可能多地保留在Firebase中。)

编辑

正如Kato所建议的,这是一个具体示例。我们有20,000个用户,其名称存储如下:

/users/$userId/name


通常,用户会按名称查找另一个用户。当用户查找其好友时,我们希望使用一个下拉列表填充名称以搜索者输入的字母开头的用户列表。因此,如果我键入“ Ja”,则期望在下拉菜单中看到“ Jake Heller”,“ jake gyllenhaal”,“ Jack Donaghy”。

最佳答案

我知道这是一个老话题,但仍然很重要。根据上述尼尔的答案,您可以更轻松地搜索以下内容:

fb.child('tags').startAt(queryString).endAt(queryString + '\uf8ff').limit(5)


请参见 Firebase Retrieving Data


上面查询中使用的\ uf8ff字符是一个很高的代码点
在Unicode范围内。因为它在大多数常规字符之后
Unicode,查询匹配所有以queryString开头的值。

关于autocomplete - 使用Firebase自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23506800/

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