Así es como Paul Graham describes the ranking algorithm for Hacker News:Implementación del Hacker News algoritmo de clasificación en SQL
News.YC está justo
(p - 1)/(t + 2)^1,5
donde p = puntos y T = edad en horas
que me gustaría hacer eso en mySQL pura da las siguientes tablas:
- Publicaciones de tabla con los campos postID (índice) y postTime (marca de tiempo).
- Table Votos con los campos voteID (index), postID, y vote (integer, 0 o 1).
La idea del campo de votación es que los votos pueden rescindirse. A los efectos del ranking, vote = 0 es equivalente a no votar en absoluto. (Todos los votos son votos hacia arriba, no hay votos hacia abajo)
La pregunta es cómo crear una consulta que devuelva los N primeros ID de correo, ordenados por la fórmula de Paul Graham. Hay aproximadamente 100k publicaciones en total, así que si crees que será necesario almacenar en caché los puntajes o cualquier cosa, me gustaría escuchar consejos sobre eso.
(Obviamente, esto no es ciencia de cohetes y ciertamente puedo averiguarlo, pero pensé que alguien que come SQL para el desayuno, el almuerzo y la cena podría simplemente contarlo. Y parece valioso tener disponible en StackOverflow.)
preguntas relacionadas:
- Hacker News style ordering algorithm in Linq-To-SQL
- How To Sort Like Hacker News
- https://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot
Acabo de implementar esto en un proyecto y parece funcionar muy bien hasta ahora. Hará más pruebas e informará. – Banago