Domanda

Abbiamo bisogno di un sistema di "rating" in un progetto su cui stiamo lavorando, simile a quello di SO.Tuttavia, nel nostro ci sono più entità che devono essere "taggate" con un voto in su (solo in su, mai in giù, come un incremento).A volte dovremo mostrare tutte le entità in ordine di ciò che è valutato più alto, indipendentemente dal tipo di entità, fondamentalmente mescolando i set di risultati, immagino.Quali strutture dati/algoritmi utilizzate per implementarlo in modo che sia flessibile e comunque scalabile?

È stato utile?

Soluzione

Dato che l'algoritmo di classificazione di Reddit è eccezionale, ha molto senso dargli un'occhiata, se non copiarlo:


Considerando l'ora in cui è stata pubblicata la voce A e l'ora delle 7:46:43.8 dicembre 2005 B abbiamo tS come differenza in secondi:

TS = A-B

e x come differenza tra il numero di voti positivi U e il numero di voti contrari D:

x = U-D

Dove

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

e z come valore massimo del valore assoluto di x e 1:

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

abbiamo il rating come funzione ƒ(tS, y, z):

ƒ(tS, y, z) = logaritmo10 z + (y • tS)/45000


Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top