Algoritmo de popularidad - SQL / Django
-
21-09-2019 - |
Pregunta
He estado buscando en los algoritmos utilizados popularidad en sitios como Reddit , Digg e incluso Stackoverflow .
Reddit algoritmo:
t = (time of entry post) - (Dec 8, 2005)
x = upvotes - downvotes
y = {1 if x > 0, 0 if x = 0, -1 if x < 0)
z = {1 if x < 0, otherwise x}
log(z) + (y * t)/45000
Siempre he realizado pedidos sencilla dentro de SQL, me pregunto cómo debo tratar con tales pedidos.
En caso de que se utiliza para definir una tabla, o puede que construir un SQL con el orden dentro de la fórmula ( sin obstaculizar el rendimiento )?
También me pregunto, si es posible utilizar varios algoritmos de ordenación en diferentes ocasiones, sin incurrir en problemas de rendimiento.
Estoy usando Django y PostgreSQL.
La ayuda sería muy apreciada! ^^
Solución
Se debe almacenar en caché tu índice de popularidad en una columna propia y actualizarlo cuando los valores subyacentes cambio. También debe configurar un índice de base de datos en esa columna. Si a continuación, también en caché el resultado de sus la mayoría de las consultas comunes, que tomó las medidas más eficaces para el rendimiento de las consultas de popularidad.