Implementando o algoritmo de classificação Hacker News no SQL
Aqui está comoPaul Graham descreve o algoritmo de classificação do Hacker News:
News.YC's é apenas
(p - 1) / (t + 2) ^ 1,5
onde p = pontos et = idade em horas
Eu gostaria de fazer isso no mySQL puro, considerando as seguintes tabelas:
Postagens da tabela com os campos postID (índice) e postTime (registro de data e hora).Tabela Votos com os campos voteID (índice), postID e vote (número inteiro, 0 ou 1).A idéia do campo de votação é que os votos possam ser cancelados. Para os propósitos da classificação, voto = 0 é equivalente a nenhum voto. (Todos os votos são positivos, nenhum voto negativo.)
A questão é como construir uma consulta que retorne os N postIDs principais, classificados pela fórmula de Paul Graham. Existem aproximadamente 100 mil postagens no total, portanto, se você acha que o cache das pontuações ou algo será necessário, eu adoraria ouvir conselhos sobre isso.
(Obviamente, isso não é ciência do foguete e eu certamente posso descobrir, mas imaginei que alguém que come SQL no café da manhã, almoço e jantar poderia simplesmente fazer isso. E parece valioso ter disponível no StackOverflow.)
Perguntas relacionadas:
Algoritmo de pedidos no estilo Hacker News no Linq-To-SQLComo classificar como Hacker Newshttps://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot