2008-08-29 13 views
5

Necesitamos un sistema de "calificación" en un proyecto en el que estamos trabajando, similar al de SO. Sin embargo, en el nuestro hay múltiples entidades que necesitan ser "etiquetadas" con un voto arriba (solo arriba, nunca abajo, como un incremento). A veces tendremos que mostrar todas las entidades en orden de lo que se clasifica como la más alta, independientemente del tipo de entidad, básicamente mezclando los conjuntos de resultados, supongo. ¿Qué estructuras/algoritmos de datos utiliza para implementar esto de forma que sea flexible y aún escalable?¿Cómo construyes una implementación de calificaciones?

Respuesta

6

Desde rocas algoritmo de clasificación de reddit, que hace mucho sentido tener una mirada en ella, si no copiarlo:


Dado el tiempo la entrada se publicó A y el tiempo de 7:46: 43 enmiendas 8 de diciembre de, 2005b tenemos t s como su diferencia en segundos:

t s = a - B

yx como la diferencia entre el número de votos hasta un T d el número de votos por D:

x = U - D

Dónde

y = 1 if x > 0 
y = 0 if x = 0 
y = -1 if x < 0 

y z como el valor máximo del valor absoluto de x y 1:

z = |x| if |x| >= 1 
z = 1 if |x| < 1 

tenemos la calificación como una función ƒ (t s, y, z):

ƒ (t s, y, z) = log z + (y • t s)/45000


Cuestiones relacionadas