Implementieren des Hacker News-Ranking-Algorithmus in SQL

Hier ist wiePaul Graham beschreibt den Ranking-Algorithmus für Hacker News:

News.YC ist nur

(p - 1) / (t + 2) ^ 1,5

wo p = Punkte und t = Alter in Stunden

Ich würde das gerne in reinem mySQL machen, wenn ich die folgenden Tabellen hätte:

Tabelle Posts mit den Feldern postID (Index) und postTime (Zeitstempel).Tabelle Stimmen mit den Feldern voteID (Index), postID und vote (Ganzzahl, 0 oder 1).

Die Idee des Abstimmungsfelds ist, dass Abstimmungen widerrufen werden können. Für die Zwecke des Rankings bedeutet Abstimmung = 0, dass überhaupt keine Abstimmung stattfindet. (Alle Stimmen sind positive Stimmen, keine negativen Stimmen.)

Die Frage ist, wie eine Abfrage erstellt wird, die die Top-N-Post-IDs zurückgibt, sortiert nach der Paul-Graham-Formel. Insgesamt gibt es ungefähr 100.000 Posts. Wenn Sie also glauben, dass die Partituren zwischengespeichert werden müssen oder etwas benötigt wird, würde ich gerne einen Rat dazu hören.

(Offensichtlich ist dies keine Raketenwissenschaft und ich kann es mit Sicherheit herausfinden, aber ich dachte mir, dass jemand, der SQL zum Frühstück, Mittag- und Abendessen isst, es einfach rasseln könnte. Und es scheint wertvoll, auf StackOverflow verfügbar zu sein.)

Verwandte Fragen:

Hacker News-Bestellalgorithmus in Linq-To-SQL So sortieren Sie wie Hacker Newshttps: //meta.stackexchange.com/questions/11602/what-formula-should-used-to-determine-ho

Antworten auf die Frage(4)

Ihre Antwort auf die Frage