Je suis en train de concevoir un nouveau site internet, et je viens demander l'avis de personnes éclairées au sujet de la meilleure façon de faire plusieurs calculs (algorithmes ?).
Si je vous fait cette demande c'est que les Maths ne sont pas vraiment mon fort, et que j'espère tomber sur des personnes ayant déjà eu un cas similaire.
De même je mets ça dans la partie SQL, peut être que certains auront également des exemples de requêtes performantes.
Popularité d'une Photo
Admettons que je créé une photo à une date x.
Cette photo reçoit y nombre de visites.
Cette photo est favorisée f fois.
Ces mêmes favoris sont ajoutés à un moment ft.
Cette photo reçoit z nombre de commentaires
Ces mêmes commentaires sont créé à un moment zt.
Pour résumer :
x = date photo
y = nombre visites photo
f = nombre de fois qu'elle a été ajoutée aux favoris
ft = date favoris
z = nombre commentaires
zt = date commentaire
A partir de là, il faudrait que je récupère un pourcentage ou une valeur me permettant de savoir quelle photo est la plus populaire pendant le mois en cours (bon ça c'est un détail).
Sachant que je voudrais donner plus d'importance aux photos :
1° - Qui ont été créées récemment.
2° - Qui ont un plus grand nombre de commentaires durant les derniers jours ou les dernières heures.
3° - Qui ont le plus grand nombre de commentaires sur le mois.
4° - Qui ont été favorisées plus de fois durant les derniers jours ou les dernières heures.
5° - Qui ont le plus grand nombre de favoris sur le mois.
J'insiste bien sur cet ordre de priorité, une photo ancienne qui a eu un grand nombre de visite qu'une photo récente aura moins d'importance.
Tout dépendant bien sûr de la pondération (1000 visites sur une photo ancienne reste plus important que 0 sur une photo neuve).
Tableau de valeurs
Je vous fournis un exemple de valeurs si besoin (ma table n'est pas créée comme ça hein c'est juste pour faciliter la tâche ^^). Vous pouvez bien sûr en imaginer d'autres, je n'ai pas représenté tous les cas de figures.
Et je pars du principe qu'il y aura plus de créations de favoris que de commentaires, vu les nombres que j'indique je n'ai pas mis leur date d'ajout, mais elle sera bien nécessaire.
#Photo
Date Photo
Visites
Favorisée
#Commentaire
Date Comm'
1
2011-09-01 08:00:00
205
53
-
-
-
-
-
-
-
-
2
2011-09-05 18:26:40
8
8
1
2011-09-05 18:57:49
-
-
-
-
2
2011-09-08 19:34:49
-
-
-
-
3
2011-09-08 19:34:40
-
-
-
-
-
-
3
2011-09-08 19:34:43
162
21
1
2011-09-08 19:34:50
-
-
-
-
2
2011-09-08 19:34:51
-
-
-
-
3
2011-09-08 19:34:53
-
-
-
-
4
2011-09-08 19:35:05
-
-
-
-
5
2011-09-08 19:35:14
-
-
-
-
6
2011-09-08 19:38:47
-
-
-
-
7
2011-09-08 19:39:00
-
-
-
-
8
2011-09-09 23:51:57
-
-
-
-
-
-
4
2011-09-10 11:40:37
0
0
-
-
Bon j'ai un autre calcul un peu plus complexe à faire, mais je ne vais peut être pas en mettre trop d'un coup, et j'essaierais de le faire par moi-même une fois que j'aurais celui-ci.
Merci d'avance !
[EDIT]
Rajout du nombre de favoris f, ces favoris étant ajoutés à une date ft également [/EDIT]
Salut !
Effectivement tu devrais trouver plus de réponse sur le forum Maths, je ne peux pas déplacer un sujet Info <-> Sciences donc rouvres un sujet côté Sciences.
PS : en effet la base de données n'a pas beaucoup d'importance vu qu'elle est déjà créée de manière adéquate. J'espérais quand même tomber sur quelqu'un ayant eu affaire à un cas similaire
Bon, pour bien commencer il faudrait peut-être dans un premier temps mieux organiser le gros bloc qui contient tout les données par quelque chose qui ressemble plus à ceci :
Ensuite pour créer ton classement tu n'as besoin que d'une chose : La bonne formule mathématique.
Pour voir à quoi peut ressembler cette formule, je peux te donner l'exemple du top 250 du site d'IMDB qui classe ses films selons certains critères :
Citation : IMDB
The formula for calculating the Top Rated 250 Titles gives a true Bayesian estimate: WR = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C
where:
WR = Weighted Rating
R = average for the movie (mean) = (Rating)
v = number of votes for the movie = (votes)
m = minimum votes required to be listed in the Top 250 (currently 3000)
C = the mean vote across the whole report (currently 6.9)
For the Top 250, only votes from regular voters are considered.
Bon, pour bien commencer il faudrait peut-être dans un premier temps mieux organiser le gros bloc qui contient tout les données par quelque chose qui ressemble plus à ceci
Hmmm comme je l'ai dit dans mon premier post, j'ai déjà une base de données construite de manière adéquate (avec 4 tables différentes et des jointures).
Le tableau fourni n'étant construit de cette manière que pour une facilité d'utilisation des données sur le SdZ (je ne voulais pas étaler 4 tableaux sur la page).
Mais merci pour la formule, je vais regarder ça de plus près.
Calcul de Popularité
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Mon site perso / Retrouvez tous mes tutoriels vidéos à propos de Symfony2 sur Grafikart.fr