Aerospike自动完成

时间:2015-09-17 08:06:41

标签: caching autocomplete aerospike

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

2 个答案:

答案 0 :(得分:3)

基本上,您需要在字符串上进行前缀匹配的功能。 Aerospike主要是一个键值存储,它还支持二级索引查询。 Aerospike中的二级索引查询尚不支持字符串的前缀匹配。如果支持此功能,您可以将Aerospike用于您的用例。

答案 1 :(得分:1)

已经使用现有功能集部署了一个。它的工作方式大致如下:

使用Aerospike自动完成功能

  1. 决定字符的触发次数(例如3,'prefixlength')
  2. 过滤任何输入以仅获取ascii字符(无é,ä,ü,..),修剪所有空格并转换为小写。
  3. 创建从“Autocomplete_aaa”到“Autocomplete_zzz”的所有可能组合的记录,每个记录都有一个列表(将使用大型有序列表为安全方) OR 处理查询中不存在的记录编辑逻辑。
  4. 在每个列表中,收集输入前缀时要提议的所有字符串。
  5. 每当用户输入内容时,将其剪切为前缀长度,只需查询记录'Autocomplete_car'即可提出“汽车”,“汽车维修”等信息。
  6. 从现在开始,只需使用该列表在客户端进一步过滤(例如javascript)。
  7. 这方面的主要内容是,您必须将结果和搜索条件减少到相同的识别标记(此处为3个ascii字符),这些标记将作为记录的主键。

    注意:就列表大小而言,这不会无限缩放。您需要仔细选择前缀长度,因此没有太多的提案需要从db读取并转移到客户端,但如果不使用大型,无限可扩展的数据类型,也要注意Aerospike的最大记录大小大清单。