Frage

Wir benötigen für ein Projekt, an dem wir arbeiten, ein „Bewertungssystem“, ähnlich dem in SO.Bei uns gibt es jedoch mehrere Entitäten, die mit einer Aufwärtsstimme „markiert“ werden müssen (nur nach oben, niemals nach unten, wie bei einer Erhöhung).Manchmal müssen wir alle Entitäten in der Reihenfolge ihrer höchsten Bewertung anzeigen, unabhängig vom Entitätstyp, wobei wir im Grunde genommen die Ergebnismengen mischen, denke ich.Mit welchen Datenstrukturen/Algorithmen setzen Sie das so um, dass es flexibel und trotzdem skalierbar ist?

War es hilfreich?

Lösung

Da der Ranking-Algorithmus von reddit der Hammer ist, ist es sehr sinnvoll, ihn sich anzusehen, wenn nicht sogar zu kopieren:


Unter Berücksichtigung der Zeit, zu der der Eintrag veröffentlicht wurde, A und der Zeit von 7:46:43 Uhr.8. Dezember 2005 B wir haben tS als ihre Differenz in Sekunden:

TS = A - B

und x als Differenz zwischen der Anzahl der Up-Votes U und der Anzahl der Down-Votes D:

x = U - D

Wo

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

und z als Maximalwert des Absolutwerts von x und 1:

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

wir haben die Bewertung als Funktion ƒ(tS, y, z):

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


Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top