Pregunta

Necesitamos un sistema de "calificación" en un proyecto en el que estamos trabajando, similar al de SO.Sin embargo, en el nuestro hay varias entidades que deben "etiquetarse" con un voto positivo (solo hacia arriba, nunca hacia abajo, como un incremento).A veces necesitaremos mostrar todas las entidades en orden según la calificación más alta, independientemente del tipo de entidad, básicamente mezclando los conjuntos de resultados, supongo.¿Qué estructuras de datos/algoritmos utiliza para implementar esto de modo que sea flexible y aún escalable?

¿Fue útil?

Solución

Dado que el algoritmo de clasificación de Reddit es excelente, tiene mucho sentido echarle un vistazo, si no copiarlo:


Dada la hora en que se publicó la entrada A y la hora de las 7:46:43 a.m.8 de diciembre de 2005 B tenemos ts como su diferencia en segundos:

ts = A-B

y x como la diferencia entre el número de votos a favor U y el número de votos en contra 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 en función ƒ(ts, y, z):

ƒ(ts, y, z) = registro10 z + (y • ts)/45000


Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top