使用 Redis 自动完成

了解如何使用 Redis 的自动完成功能进行基于前缀的高效建议检索。

概述

Redis 查询引擎使用存储在基于 trie 的数据结构中的建议提供自动完成功能。 此功能允许您根据用户输入前缀存储和检索排名建议,使其适用于搜索框、命令完成和聊天机器人响应等应用程序。

本指南介绍如何使用FT.SUGADD,FT.SUGGET,FT.SUGDELFT.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.SUGADDcommand 可以采用两个可选参数:

  • INCR:按给定的分数递增建议的现有条目,而不是替换分数。这对于根据用户查询实时更新字典非常有用。
  • PAYLOAD:将字符串与建议一起保存,可以通过添加WITHPAYLOADSargument 设置为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:返回与建议一起保存的可选负载。如果条目不存在有效负载,则nilreply 返回。
    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

一种常见的方法是:

  1. 使用 FT。SUGGET 在用户在文本字段中键入时建议查询完成。
  2. 用户选择建议后,运行 FT。SEARCH 使用所选词语获取完整搜索结果。

示例工作流

  1. 获取给定用户输入的建议。

    FT.SUGGET autocomplete "hel"
    
  2. 捕获用户的选择。

  3. 在全文搜索中使用所选建议。

    FT.SEARCH index "hello world"
    
  • FT.SUGGET当您需要快速、实时的基于前缀的建议检索时。
  • FT.SEARCH当您需要根据相关性进行文档检索、筛选和排名时。

自动完成用例

Redis 查询引擎中的自动完成功能可用于:

  • 搜索框建议:在用户键入时提供实时建议。
  • 命令补全:为 CLI 工具提供自动补全功能。
  • 产品搜索:在电子商务应用程序中建议产品名称。
  • Chatbot 响应:动态推荐常用短语。
为本页评分
返回顶部 ↑