【海量数据处理——01】搜索引擎Top K热词以及倒排索引

1.        倒排索引

当在百度输入“数据结构”之后发生了什么?

就是把文章中的关键词和对应的文章标题和链接放到一张索引表,当输入关键词时,就去表里边索引链接,确定记录的位置。

2.        当输入“北京”,为什么会有很多展示的词?

trie树+top k

[1]      首先,trie树是用来做文本存储。

根节点没有字符,每个节点包含一个字符,从根到某节点,就是对应的字符串,从根遍历单词,存在的节点为红,不存在节点为黑。

[2]      用top k来统计热词

A.       如果数据规模太大不能放进内存

如1亿个IP,主要是看IP有多少种,不考虑1亿,2^32大概是4G,不能放进内存,所以要先%1024,分成1024个小文件,每个小文件4MB,每个小文件构造一个哈希表,记录出现次数最多的ip,然后对1024个ip进行常规排序。

B.       如果规模比较小,可以放进内存

如1000万个字符串,每个字串1-255字节,有重复,大概有300万个无重复的,求出出现次数最多的前10个。

300万个字符串,每个255字节,300万*255B=3M*1/4KB=0.75GB,可以放进内存,所以可以哈希统计+top K.

第一步:对数据预处理,遍历字符串,哈希表存放出现次数。

第二部:建立个K大小的小顶堆,遍历哈希表的键。分别与根元素进行对比,更新。

你可能感兴趣的:(【海量数据处理——01】搜索引擎Top K热词以及倒排索引)