全文见 How to implement Frequented Visitees of Sina Weibo
本文是我臆想中的实现这个功能可能的方法,不代表我反向工程了新浪微博,也不代表微博是如此实现的。
主要思路:用户的浏览数据是以流(在线)的方式呈现的,使用熟知的估计流中元素频率的方法可以在时间、额外空间都很少的情况下实现用户访问一个人的频率的估计,从而给出“经常访问的人”。
1
smartiscool 2017-12-18 16:46:01 +08:00
一般都是离线计算一下然后放缓存里,没你想的那么复杂
|
2
wizardforcel 2017-12-18 18:14:00 +08:00
到日志服务器里面检索一周之内的访问记录,然后计数排序就行了。
|
3
owenliang 2017-12-18 18:33:21 +08:00 via Android
取近期访问日志,日志 a,b 表示 a 访问了 b。
mrjob 第一轮统计 a,b 的计数,第二轮按 a 聚合 topN,结果进 redis。 |
4
SoulSleep 2017-12-18 19:47:29 +08:00
有勇气用英文写,就可以大大的赞一个了!
|
5
Hackghost 2017-12-18 21:35:18 +08:00
🤔️貌似可以加入时间衰减系数,让最近看得多的排在前面
|
6
geelaw OP @wizardforcel Hmmm 您可能没有意识到这样计算是比较慢的。
@owenliang 同上。 另外该方案也可以用于 trending 的计算(还需要一个等价类 filter 一下) @Hackghost 你没注意到最后一段提了如何加入指数衰减哈哈哈哈,就是每次处理之前乘一下上次以来的衰减系数,并把计数放宽到非整数。 |
7
wizardforcel 2017-12-19 09:26:35 +08:00 via Android
|
8
feiyang21687 2017-12-21 16:07:24 +08:00
@geelaw 要不要来微博聊聊,^_^
|