使用 Redis 自动完成
了解如何使用 Redis 的自动完成功能进行基于前缀的高效建议检索。
概述
Redis 查询引擎使用存储在基于 trie 的数据结构中的建议提供自动完成功能。 此功能允许您根据用户输入前缀存储和检索排名建议,使其适用于搜索框、命令完成和聊天机器人响应等应用程序。
本指南介绍如何使用FT.SUGADD
,FT.SUGGET
,FT.SUGDEL
和FT.SUGLEN
命令来实现自动完成,以及如何将这些命令与FT.SEARCH
.
添加自动完成建议
要将短语或单词添加到建议词典中,请使用FT.SUGADD
命令。
您将为每个条目分配一个分数,这将决定其在结果中的排名。
FT.SUGADD autocomplete "hello world" 100
FT.SUGADD autocomplete "hello there" 90
FT.SUGADD autocomplete "help me" 80
FT.SUGADD autocomplete "hero" 70
上述示例中使用了整数分数,但 scores 参数被描述为浮点。
整数分数在内部转换为 float point。
还有,”autocomplete
“ 在上面的例子中只是键的名称;您可以使用任何所需的密钥名称。
可选参数
这FT.SUGADD
command 可以采用两个可选参数:
INCR
:按给定的分数递增建议的现有条目,而不是替换分数。这对于根据用户查询实时更新字典非常有用。PAYLOAD
:将字符串与建议一起保存,可以通过添加WITHPAYLOADS
argument 设置为FT.SUGGET
.
检索建议
要获取给定前缀的自动完成建议,请使用FT.SUGGET
命令。
redis> FT.SUGGET autocomplete "he"
1) "hero"
2) "help me"
3) "hello world"
4) "hello there"
如果您想查看分数,请使用WITHSCORES
选择:
redis> FT.SUGGET autocomplete "he" WITHSCORES
1) "hero"
2) "40.414520263671875"
3) "help me"
4) "32.65986251831055"
5) "hello world"
6) "31.62277603149414"
7) "hello there"
8) "28.460498809814453"
启用模糊匹配
如果您想允许小的拼写错误或拼写错误,请使用FUZZY
选择。此选项执行模糊前缀搜索,包括与提供的前缀的距离为 1 的前缀。
redis> FT.SUGGET autocomplete hell FUZZY
1) "hello world"
2) "hello there"
3) "help me"
可选参数
还有三个额外的参数可以使用 witFT.SUGGET
:
MAX num
:将结果限制为最大值num
.默认的MAX
是 5。WITHSCORES
:返回每个建议的分数。WITHPAYLOADS
:返回与建议一起保存的可选负载。如果条目不存在有效负载,则nil
reply 返回。redis> FT.SUGADD autocomplete hero 70 PAYLOAD "you're no hero" (integer) 4 redis> FT.SUGGET autocomplete "hr" FUZZY WITHPAYLOADS 1) "hero" 2) "you're no hero" 3) "help me" 4) (nil) 5) "hello world" 6) (nil) 7) "hello there" 8) (nil)
删除建议
要从字典中删除特定建议,请使用FT.SUGDEL
命令。
redis> FT.SUGDEL autocomplete "help me"
(integer 1)
删除后,运行FT.SUGGET autocomplete hell FUZZY
将不再返回 “Help me”。
检查建议数量
要获取给定建议字典中的条目数,请使用FT.SUGLEN
命令。
redis> FT.SUGLEN autocomplete
(integer) 3
在搜索中使用自动完成
一种常见的方法是:
- 使用 FT。SUGGET 在用户在文本字段中键入时建议查询完成。
- 用户选择建议后,运行 FT。SEARCH 使用所选词语获取完整搜索结果。
示例工作流
-
获取给定用户输入的建议。
FT.SUGGET autocomplete "hel"
-
捕获用户的选择。
-
在全文搜索中使用所选建议。
FT.SEARCH index "hello world"
何时使用自动完成搜索与全文搜索
- 用
FT.SUGGET
当您需要快速、实时的基于前缀的建议检索时。 - 用
FT.SEARCH
当您需要根据相关性进行文档检索、筛选和排名时。
自动完成用例
Redis 查询引擎中的自动完成功能可用于:
- 搜索框建议:在用户键入时提供实时建议。
- 命令补全:为 CLI 工具提供自动补全功能。
- 产品搜索:在电子商务应用程序中建议产品名称。
- Chatbot 响应:动态推荐常用短语。