Comment écrire l'algorithme de popularité de SO en MySQL?L'algorithme de popularité de StackOverflow en MySQL
L'algorithme est détaillé ici: Popularity algorithm.
merci!
Comment écrire l'algorithme de popularité de SO en MySQL?L'algorithme de popularité de StackOverflow en MySQL
L'algorithme est détaillé ici: Popularity algorithm.
merci!
C'est relativement simple.
t = (time of entry post) - (Dec 8, 2005)
Vous convertir les valeurs de date à horodatages (vous pouvez utiliser unix_timestamp
), ce qui vous donne un entier qui peut être utilisé dans le reste des comparaisons.
x = upvotes - downvotes
Celui-ci devrait être assez facile ... évidemment MySQL supporte la soustraction.
y = {1 if x > 0, 0 if x = 0, -1 if x < 0)
z = {1 if x < 0, otherwise x}
Pour ces derniers, un coup d'oeil à la déclaration case
de MySQL.
log(z) + (y * t)/45000
MySQL a une fonction log
, de sorte que celui-ci devrait être facile aussi, juste mathématiques simples.
Et, vous liez tout cela avec une instruction select
. Vous pouvez stocker des calculs intermédiaires dans votre instruction select
en utilisant user-defined variables. Par exemple:
select @x := (upvotes - downvotes) as x,
(@x > 4) as isXGreaterThanFour
Comment utilisez-vous 'x' (upvotes-downvotes) dans l'instruction CASE? –
J'ai ajouté un exemple d'utilisation des variables pour les calculs intermédiaires –
Seriez-vous en mesure d'écrire ceci dans son intégralité? Je suis encore plutôt confus ici ... –