Come si costruisce un'implementazione delle valutazioni?
-
09-06-2019 - |
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?
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