2010-03-22 16 views
6

He estado buscando en los algoritmos utilizados popularidad en sitios como Reddit , Digg e incluso Stackoverflow.popularidad Algoritmo - SQL/Django

algoritmo Reddit:

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.

¿Debería usarse para definir una tabla, o podría construir un SQL con el orden dentro de la fórmula (sin obstaculizar el rendimiento)?

También me pregunto si es posible utilizar algoritmos de ordenamiento múltiple en diferentes ocasiones, sin incurrir en problemas de rendimiento.


Estoy usando Django y PostgreSQL.

Ayuda sería muy apreciada! ^^

Respuesta

3

Debe poner en caché su clasificación de popularidad en una columna propia y actualizarla cuando los valores subyacentes cambien. También debe configurar un índice de base de datos en esa columna. Si luego guarda en caché el resultado de sus consultas más comunes, tomó las medidas más efectivas para el rendimiento de sus consultas de popularidad.

+0

@stefanw Tuve que leer su respuesta por segunda vez. Gracias Stefan, creo que este es el camino a seguir. Ordenar o configurar a través de SQL sería simplemente una forma no demasiado complicada. :) – RadiantHex