统计外站的搜索关键词的词频

   统计外站的搜索关键词的词频
  
   通过外站的链接主要是百度,谷歌,soso等,每天都有通过记录在日志文件中,每天会运行程序进行统计。
每天产生有10多个文件,每个文件1G左右, 每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。要按照解析query中的关键词,并对统计其频度,取出搜索次数最多的前1000个关键词。

第一次直接遍历所有文件并按照Map<String,Integer>方式来统计,统计差不多共有四千万条记录,词也有一百万多个,最后排序实现。方法简单,但也有很大的缺点,占用的内存太大,可能会将服务器弄垮掉。

 

     
先不统计,利用外存处理,将分析出来的每一个关键词,取出第一个字符的哈希值%500,分别放进500个临时文件中,然后才对每个文件进行统计。

 

 

 

 


由于只取前1000个关键词,所以每统计完一个文件后,采用堆排序,将前1000名的关键词保存在一个堆里,这样内存中只维护一份堆,可以减少许多内存的消耗,只占用到之前的五分之一以下。速度较之前也提高不少。

主要代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值