views:

137

answers:

2

this is the hacker news ranking algorithm, which i think is a simple way of ranking things, espcially if users are voting on items, but i really dnt understand this, can this be converted to php, so i can understand it fully?

; 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)))))

someone please help me thanks :))

+4  A: 

There are write-ups about how this algorithm works. A quick search discovered: How Hacker News ranking algorithm works.

Lisp can make things seem more complicated than they really are.

evolve
thanks, thats where i got the algorithm in lisp from lol, cheers anyway +upvote from me
getaway
+4  A: 

Directly ripped from http://amix.dk/blog/post/19574 and translated to PHP from the Python:

function calculate_score($votes, $item_hour_age, $gravity=1.8){
    return ($votes - 1) / pow(($item_hour_age+2), $gravity);
}
Mark E
thank you for this great answer, can you just explain the $item_hour_age for me please, thanks , btw +1 upvote form me :))
getaway
@getaway - `$item_hour_age` is age (amount of time since it was created) of the thing you're ranking counted in hours (starting at 0)
Mark E
cheers! :)) @mark your amazing
getaway