如何实现微博的“我经常访问的人”

2017-12-18 12:12:28 +08:00
 geelaw

全文见 How to implement Frequented Visitees of Sina Weibo

本文是我臆想中的实现这个功能可能的方法,不代表我反向工程了新浪微博,也不代表微博是如此实现的。

主要思路:用户的浏览数据是以流(在线)的方式呈现的,使用熟知的估计流中元素频率的方法可以在时间、额外空间都很少的情况下实现用户访问一个人的频率的估计,从而给出“经常访问的人”。

9104 次点击
所在节点    分享创造
8 条回复
smartiscool
2017-12-18 16:46:01 +08:00
一般都是离线计算一下然后放缓存里,没你想的那么复杂
wizardforcel
2017-12-18 18:14:00 +08:00
到日志服务器里面检索一周之内的访问记录,然后计数排序就行了。
owenliang
2017-12-18 18:33:21 +08:00
取近期访问日志,日志 a,b 表示 a 访问了 b。

mrjob 第一轮统计 a,b 的计数,第二轮按 a 聚合 topN,结果进 redis。
SoulSleep
2017-12-18 19:47:29 +08:00
有勇气用英文写,就可以大大的赞一个了!
Hackghost
2017-12-18 21:35:18 +08:00
🤔️貌似可以加入时间衰减系数,让最近看得多的排在前面
geelaw
2017-12-18 22:09:52 +08:00
@wizardforcel Hmmm 您可能没有意识到这样计算是比较慢的。
@owenliang 同上。

另外该方案也可以用于 trending 的计算(还需要一个等价类 filter 一下)

@Hackghost 你没注意到最后一段提了如何加入指数衰减哈哈哈哈,就是每次处理之前乘一下上次以来的衰减系数,并把计数放宽到非整数。
wizardforcel
2017-12-19 09:26:35 +08:00
@geelaw 无所谓,反正是离线逻辑。

而且多机情况下根本不缺计算资源。
feiyang21687
2017-12-21 16:07:24 +08:00
@geelaw 要不要来微博聊聊,^_^

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/415626

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX