2010-10-20 6 views
8

Dies ist der Hacker News Ranking-Algorithmus, der meiner Meinung nach eine einfache Methode ist, Dinge zu klassifizieren, besonders wenn Benutzer über Items abstimmen, aber ich verstehe das wirklich nicht. Kann ich das in PHP umwandeln?Hacker Nachrichtenalgorithmus in 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))))) 

Antwort

12

Direkt zerrissen von http://amix.dk/blog/post/19574 und übersetzt PHP aus dem Python:

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

Danke für diese großartige Antwort kann Du erklärst mir einfach die $ item_hour_age für mich, danke, btw +1 upvote form me :)) – getaway

+0

@getaway - '$ item_hour_age' ist das Alter (Anzahl der Zeit seit der Erstellung) von dem, was du in Stunden gezählt hast (beginnend bei 0) –

+0

Prost! :)) @mark your amazing – getaway

6

Es gibt Aufstellungen darüber, wie dieser Algorithmus funktioniert. Eine schnelle Suche entdeckt: How Hacker News ranking algorithm works.

Lisp kann die Dinge komplizierter erscheinen lassen, als sie wirklich sind.

+1

Dank, das ist, wo ich den Algorithmus in Lisp bekam von lol, prost + sowieso upvote von mir – getaway

Verwandte Themen