7Fermer9
onurLe 19/04/2009 à 01:18
Ok, en fait j'ai pas tellement la main sur la saisie mais disons que c'est difficile pour un user de "voter" 1000 pour une ville (disons que c'est pas un vote explicite que les users font, c'est en fonction de leur comportement que je détermine ça). Il peut y avoir des rapport 1/1000 d'un user à l'autre mais pas 1/10000000 quoi (ou alors le mec passe sa vie sur le site).

Sinon le logarithme me parait une bonne idée en effet. Je biaiserais peut-être la fonction log avec log(0)=0 parce que sinon ça fait une trop grosse pénalité. Par exemple pour le cas suivant:

            User1 |  User2  | ...
-----------------------------
Ville1   |  2    |   0     |   
-----------------------------
Ville2   |  2    |  30     |  
----------------------------------------------
Ville3   |  2    |   0     |   


(avec log en base 2, User2 se fait jeter alors que je le préfère à User1).

Maintenant reste à savoir comment je peux avoir une requete efficace. Je précalcule les logScore = log(score) et ensuite un ORDER BY logScoreVille1 + logScoreVille2 + logScoreVille3. Mais est-ce que ça va être efficace? Sinon, faut que je réfléchisse à une structure avec de la redondance pour calculer cette expression rapidement.