使用Redis实现较复杂自动补全的思路

新手上路,请多包涵

我想请教一下使用Redis来做自动补全的思路,用户场景是这样的:
我有很多CSS Selector字符串,比如:

div#video.large div#video-controls span#pause.btn.btn-large

我希望当用户输入d#v s#p的时候上面这个Selector就会显示出来,因为d#vdiv#video(ddiv,#v#video)的一个前缀,同时类似地s#p是满足span#pause的前缀。

我的想法是用Redis的Set对Selector的每一个tag, id, class来做前缀索引,然后对于用户输入直接在Redis中找出d,#v,s,#p这些Set的交集,然后再在查询代码中进一步根据完整的查询做过滤,因为还需要同时满足s#p出现在d#v的后面这一条件。

我对Redis并没有很多的实际使用经验,所以想请问一下大神还有没有更好的思路,是否有巧妙的办法能够同时利用Redis处理后面的这一个顺序要求。

阅读 1.8k
1 个回答

你可以再讲标签写入 Redis 的时候再维护一个 key 是缩写,里面存放的是所有的标签的Set

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进