Wir brauchen ein "Rating" -System in einem Projekt, an dem wir gerade arbeiten, ähnlich wie in SO. Bei uns gibt es jedoch mehrere Entitäten, die mit einer Stimme "markiert" werden müssen (nur oben, nie unten, wie ein Inkrement). Manchmal müssen wir alle Entitäten in der Reihenfolge dessen anzeigen, was am höchsten bewertet wird, unabhängig vom Entity-Typ, wobei ich im Grunde die Ergebnismengen mische, denke ich. Mit welchen Datenstrukturen/Algorithmen setzen Sie das um, um flexibel und trotzdem skalierbar zu sein?Wie erstellen Sie eine Rating-Implementierung?
5
A
Antwort
6
Seit Ranking-Algorithmus Felsen des reddit, macht es sehr viel Sinn, einen Blick darauf zu werfen, wenn sie nicht kopieren:
die Zeit der Eintrag dafür sollte und die Zeit von 07.46 Uhr posted: 43 Uhr 8. Dezember 2005 B haben wir t s als Differenz in Sekunden:
t s = A - B
und x als die Differenz zwischen der Anzahl der bis Stimmen U ein d die Anzahl der nach unten Stimmen D:
x = U - D
Wo
y = 1 if x > 0
y = 0 if x = 0
y = -1 if x < 0
und z als der Maximalwert des Absolutwertes von x und 1:
z = |x| if |x| >= 1
z = 1 if |x| < 1
Wir haben die Bewertung als eine Funktion ƒ (t s, y, z):
ƒ (t s, y, z) = log z + (y t • s)/45000