爱意满满的作品展示区。
geelaw

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

  •  
  •   geelaw ·
    GeeLaw · Dec 18, 2017 · 9930 views
    This topic created in 3080 days ago, the information mentioned may be changed or developed.

    全文见 How to implement Frequented Visitees of Sina Weibo

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

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

    8 replies    2017-12-21 16:07:24 +08:00
    smartiscool
        1
    smartiscool  
       Dec 18, 2017
    一般都是离线计算一下然后放缓存里,没你想的那么复杂
    wizardforcel
        2
    wizardforcel  
       Dec 18, 2017
    到日志服务器里面检索一周之内的访问记录,然后计数排序就行了。
    owenliang
        3
    owenliang  
       Dec 18, 2017 via Android
    取近期访问日志,日志 a,b 表示 a 访问了 b。

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

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

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

    而且多机情况下根本不缺计算资源。
    feiyang21687
        8
    feiyang21687  
       Dec 21, 2017
    @geelaw 要不要来微博聊聊,^_^
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1077 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 22:58 · PVG 06:58 · LAX 15:58 · JFK 18:58
    ♥ Do have faith in what you're doing.