您现在的位置是:主页 > news > 网站更换域名注意事项/域名解析查询工具
网站更换域名注意事项/域名解析查询工具
admin2025/5/23 12:28:46【news】
简介网站更换域名注意事项,域名解析查询工具,大学网站开发的流程,郑州网站建设制作一、字典型自动补全 Redis 的有序集合有一个特性:score 相同时,是按照字典顺序排序的。 如我们需要获取带有某个前缀的提示词,将每个关键词的前缀分别提取并存储在有序集合中,如:foobar,则将 (fÿ…
一、字典型自动补全
Redis 的有序集合有一个特性:score 相同时,是按照字典顺序排序的。
如我们需要获取带有某个前缀的提示词,将每个关键词的前缀分别提取并存储在有序集合中,如:foobar,则将 (f,fo,foo,foob,fooba ... foobar$) ,最后一个 foobar$ 表示这是该词的结尾,$ 可以标记为词的结尾符
127.0.0.1:6379> zrange autoc 0 -11) "b"2) "ba"3) "bar"4) "bar$"5) "f"6) "fo"7) "foo"8) "foo$"9) "foob"
10) "fooba"
11) "foobar"
12) "foobar$"
当我们如果需要获取 ba 开头的所有关键词,可以尝试使用有序集合实现:
127.0.0.1:6379> zrank autoc ba
(integer) 1
127.0.0.1:6379> zrange autoc 1 -11) "ba"2) "bar"3) "bar$"4) "f"5) "fo"6) "foo"7) "foo$"8) "foob"9) "fooba"
10) "foobar"
11) "foobar$"
可在程序中通过判断或获取指定长度的集合,获取 bar$ 结尾之前的所有词。
二、topN 关键词自动补全
假设现在需要获取以 “n” 开头的10个热门提示词,则我们首先将所有的词存放在有序集合中,score都为0
127.0.0.1:6379> zrange prefix_n 0 -1
1) "near"
2) "nequ"
3) "netflix"
4) "news"
5) "newyork"
当prefix_n(以n为前缀的集合)这个有序集合一直小于一个阈值,如300时,则直接对某一个搜索词进行 score + 1
当集合大于一个阈值时,则删除score最低的member,然后对搜索词 score + 1
从统计学上来讲,每个对于sorted set中有300个member的前缀,就能得到TOP 5关键词。如果查询越频繁,它的得分越高,它最终被选中的概率也就越高。
参考:
https://www.jianshu.com/p/b9e7feba2a9c
http://oldblog.antirez.com/post/autocomplete-with-redis.html