我想请教一下使用Redis来做自动补全的思路,用户场景是这样的:
我有很多CSS Selector字符串,比如:
div#video.large div#video-controls span#pause.btn.btn-large
我希望当用户输入d#v s#p
的时候上面这个Selector就会显示出来,因为d#v
是div#video
(d
为div
,#v
为#video
)的一个前缀,同时类似地s#p
是满足span#pause
的前缀。
我的想法是用Redis的Set对Selector的每一个tag, id, class
来做前缀索引,然后对于用户输入直接在Redis中找出d
,#v
,s
,#p
这些Set的交集,然后再在查询代码中进一步根据完整的查询做过滤,因为还需要同时满足s#p
出现在d#v
的后面这一条件。
我对Redis并没有很多的实际使用经验,所以想请问一下大神还有没有更好的思路,是否有巧妙的办法能够同时利用Redis处理后面的这一个顺序要求。
你可以再讲标签写入 Redis 的时候再维护一个 key 是缩写,里面存放的是所有的标签的Set