2010-10-20 13 views
8

Questo è l'algoritmo di ranking di Hacker News, che ritengo sia un modo semplice per classificare le cose, specialmente se gli utenti votano sugli articoli, ma io davvero non lo capisco, può essere convertito in PHP, quindi posso comprenderlo pienamente?algoritmo di notizie sugli hacker 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))))) 

risposta

12

Direttamente strappato dal http://amix.dk/blog/post/19574 e tradotto a PHP dal Python:

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

grazie per questa grande risposta, possono devi solo spiegare $ item_hour_age per me, grazie, grazie a +1 upvote formami :)) – getaway

+0

@getaway - '$ item_hour_age' è l'età (quantità di tempo da quando è stata creata) della cosa che viene classificata in ore (a partire da 0) –

+0

evviva! :)) @mark your amazing – getaway

6

Ci sono annotazioni su come funziona questo algoritmo. Scoperta una ricerca rapida: How Hacker News ranking algorithm works.

Lisp può far sembrare le cose più complicate di quanto siano in realtà.

+1

grazie, questo è dove ho ottenuto l'algoritmo in Lisp da lol, applausi comunque + upvote da me – getaway

Problemi correlati