【问题标题】:hacker news algorithm in php?php中的黑客新闻算法?
【发布时间】:2011-04-28 05:38:29
【问题描述】:

这是Hacker News排名算法,我认为这是一种简单的排名方式,尤其是如果用户对项目进行投票,但我真的不明白,这可以转换为PHP,所以我可以完全理解?

; Votes divided by the age in hours to the gravityth power.
; Would be interesting to scale gravity in a slider.


(= gravity* 1.8 timebase* 120 front-threshold* 1
           nourl-factor* .4 lightweight-factor* .17 gag-factor* .1)

        (def frontpage-rank (s (o scorefn realscore) (o gravity gravity*))
          (* (/ (let base (- (scorefn s) 1)
                  (if (> base 0) (expt base .8) base))
                (expt (/ (+ (item-age s) timebase*) 60) gravity))
             (if (no (in s!type 'story 'poll))  .8
                 (blank s!url)                  nourl-factor*
                 (mem 'bury s!keys)             .001
                                                (* (contro-factor s)
                                                   (if (mem 'gag s!keys)
                                                        gag-factor*
                                                       (lightweight s)
                                                        lightweight-factor*
                                                       1)))))

【问题讨论】:

    标签: algorithm lisp ranking arc-lisp


    【解决方案1】:

    直接从http://amix.dk/blog/post/19574翻录并从Python翻译成PHP:

    function calculate_score($votes, $item_hour_age, $gravity=1.8){
        return ($votes - 1) / pow(($item_hour_age+2), $gravity);
    }
    

    【讨论】:

    • 感谢您的出色回答,请您为我解释一下 $item_hour_age,谢谢,顺便说一下 +1 对我的支持 :))
    • @getaway - $item_hour_age 是您排名的事物的年龄(自创建以来的时间量),以小时计(从 0 开始)
    • @MarkElliot,后续问题 - 如何在 mysql 语句之外基于此计算算法对 mysql 选择查询中的行进行排序?
    • @Andypandy:我想我不明白你的问题;您想使用该算法对 MySQL 行进行排序,但不想让 MySQL 运行该算法?
    • 谁能解释一下,什么是重力。在什么情况下它会增加以及为什么要使用它。我在构建我的 mysql 查询时也遇到了问题,我认为从数据库中提取所有提交然后对它们进行排名不是一个好主意。无论如何,HN 会限制它吗?很抱歉这包不相关的问题!
    【解决方案2】:

    有关于此算法如何工作的文章。快速搜索发现:How Hacker News ranking algorithm works

    Lisp 可以让事情看起来比实际更复杂。

    【讨论】:

    • 谢谢,这就是我从大声笑那里得到 lisp 算法的地方,无论如何都干杯+我的支持
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多