V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kenneth
V2EX  ›  程序员

如何为极客新闻类网站设计一个牛逼的排序算法?

  •  
  •   kenneth · 2013-08-08 17:44:51 +08:00 · 3899 次点击
    这是一个创建于 4107 天前的主题,其中的信息可能已经有所发展或是发生改变。
    几种可能用到的值
    评论数,回复数
    顶,踩
    5星评分

    大家来和我说一个牛逼的排序方法,适合digg类新闻的排序用,要和用户的评论数据能互动

    代码实现上要求,实时能变化。

    高手指导来下思路。
    10 条回复    1970-01-01 08:00:00 +08:00
    felix021
        1
    felix021  
       2013-08-08 17:56:31 +08:00
    这个是产品的工作,不是程序员的工作……主要还是要从产品运营的角度上来考虑,各个方面(时间、回复、评分)的权重应该怎样分配,然后根据这个来更新帖子的排序值——只要有了值,排序的实现什么的都是小事情。
    kenneth
        2
    kenneth  
    OP
       2013-08-08 18:00:15 +08:00
    @felix021 一个好的排序算法还是很重要的。可以得到某一个时间段里最热的帖子,还要好看。
    pubby
        3
    pubby  
       2013-08-08 18:11:27 +08:00
    找个曲线,再慢慢调参数

    digg类的还要跟时间相关的

    比如参考这个,自己慢慢调:http://www.ruanyifeng.com/blog/2012/02/ranking_algorithm_hacker_news.html
    Mutoo
        4
    Mutoo  
       2013-08-08 18:13:09 +08:00
    chmlai
        5
    chmlai  
       2013-08-08 18:16:21 +08:00
    @Mutoo 正想说阮一峰的博客.
    jjplay
        6
    jjplay  
       2013-08-08 18:41:09 +08:00
    计算单一用户停留时间 滚动时间 digg ,然后综合 平均 。。。我是随便说说
    felix021
        7
    felix021  
       2013-08-08 19:03:11 +08:00
    @kenneth 你没看懂我的意思。我的意思是,怎么定策略是难的,这个取决于你的产品的特征(比如论坛类的,最后回复时间的权值是100%,博客类的产品发布时间的权值是100%)。同样是digg类的产品,也可以为不同的参数赋不同的权值,实现不同的侧重点。一旦确认了这个策略,具体的代码实现总是很简单的。
    halfzeng
        8
    halfzeng  
       2013-08-08 19:34:16 +08:00
    stackpop
        9
    stackpop  
       2013-08-08 19:39:46 +08:00
    排序算法用堆排序就行了,评分变化的时候实时调整堆,每次代价是logN。

    至于评分如何动态变化,这个看产品怎么考虑啊,比如,多一条评论和点赞+10分
    stackpop
        10
    stackpop  
       2013-08-08 19:40:55 +08:00
    另外堆也是非常适合插入的,插入一条新闻进入原来的topN堆就行了,代价很小
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1236 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:17 · PVG 07:17 · LAX 15:17 · JFK 18:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.