Mysql
 sql >> Database >  >> RDS >> Mysql

Come vengono utilizzati gli algoritmi di ranking di Reddit e Hacker News?

Ho implementato una versione SQL dell'algoritmo di ranking di Reddit per un aggregatore di video in questo modo:

SELECT id, title
FROM videos
ORDER BY 
    LOG10(ABS(cached_votes_total) + 1) * SIGN(cached_votes_total)   
    + (UNIX_TIMESTAMP(created_at) / 300000) DESC
LIMIT 50

cached_votes_total viene aggiornato da un trigger ogni volta che viene espresso un nuovo voto. Funziona abbastanza velocemente sul nostro sito attuale, ma ho intenzione di aggiungere una colonna del valore di ranking e aggiornarla con lo stesso trigger di cached_votes_total colonna. Dopo tale ottimizzazione, dovrebbe essere abbastanza veloce per la maggior parte dei siti di qualsiasi dimensione.

modifica:ulteriori informazioni su Algoritmo di Reddit Hotness in SQL