Aerospike 自动补全

Aerospike autocompletion

我想为 aerospike 实现一个自动完成机制,但我不知道如何做。是否可以使用 aerospike 实现自动完成机制?如果是,如何实施?

基本上,您需要对字符串进行前缀匹配的功能。 Aerospike 主要是一个键值存储,另外还支持二级索引查询。 Aerospike 中的二级索引查询暂不支持字符串的前缀匹配。当支持时,您可以将 Aerospike 用于您的用例。

已经部署了一个具有现有功能集的。它的工作原理大致是这样的:

带有 Aerospike 的自动完成功能:

  1. 确定触发字符数(例如 3,'prefixlength')
  2. 过滤任何输入以仅获取 ascii 字符(无 é、ä、ü、..),trim 所有空格并转换为小写。
  3. 为从 "Autocomplete_aaa" 到 "Autocomplete_zzz" 的所有可能组合创建记录,每个组合都有一个列表(为了安全起见,将使用大型有序列表)OR 处理查询逻辑中不存在的记录。
  4. 在每个列表中,收集输入前缀时要建议的所有字符串。
  5. 每当用户输入内容时,将其剪切为前缀长度,然后查询记录 'Autocomplete_car' 以建议 'cars'、'car repair' 等。
  6. 从现在开始,只需使用该列表在客户端进一步过滤(例如 javascript)。

由此得出的主要结论是,您必须将结果和搜索词缩减为相同的标识标记(此处为 3 个 ascii 字符),该标记将充当记录的主键。

注意:这不会根据列表大小无限扩展。您需要仔细选择您的前缀长度,因此没有太多的建议需要从数据库中读取并传输到客户端,但如果不使用大型、无限可扩展的数据类型,也要注意 Aerospike 的最大记录大小,例如大名单。