【海量数据处理——01】搜索引擎Top K热词以及倒排索引
2014-09-10 10:59
351 查看
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大小的小顶堆,遍历哈希表的键。分别与根元素进行对比,更新。
当在百度输入“数据结构”之后发生了什么?
就是把文章中的关键词和对应的文章标题和链接放到一张索引表,当输入关键词时,就去表里边索引链接,确定记录的位置。
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大小的小顶堆,遍历哈希表的键。分别与根元素进行对比,更新。
相关文章推荐
- 海量数据处理专题(八)——倒排索引(搜索引擎之基石)
- 海量数据处理专题(八)——倒排索引(搜索引擎之基石)
- 海量数据处理专题(八)——倒排索引(搜索引擎之基石)
- 海量数据处理专题(八)——倒排索引(搜索引擎之基石)
- 海量数据处理专题(八)——倒排索引(搜索引擎之基石)
- 如何处理数据库中海量数据,以及处理数据库海量数据的经验和技巧
- 海量数据处理算法(top K问题)
- 海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
- Top k - 海量数据处理问题
- 如何处理数据库中海量数据,以及处理数据库海量数据的经验和技巧
- 海量数据处理算法(top K问题)
- 海量数据处理算法(top K问题)
- 海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
- 海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
- Top K、去重复、排序等海量数据处理之经典实例分析——博客地址
- 海量数据处理之倒排索引
- 海量数据处理——倒排索引
- 海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
- 海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
- 海量数据处理问题(Top k问题)的实现