Bonjour
Dans le tri des photos les mieux notées, j'ai remarqué que les photos notées plusieurs fois 5, ne passent pas devant celles qui ne sont notées qu'une fois 5. Ce qui fait que le tri des photos les mieux notée ne change pas!
http://www.freebiker.net/php/gallery/
Ya pas moyen de modifier l'ordre de tri?
Merci
C'est un sujet qui m'intéresse si quelqu'un a lu un article sur le sujet (le lien svp) exposant une méthode pour recalculer les notes.
Je serai assez partant pour étudier le sujet.
Car pour moi, un 5 d'il y a 2 ans vaut moins que celui d'il y a 5 jours.
un écart-type de 3.87 basé sur 6 notes vaut bien mieux un seul 5.
8-)
Hors ligne
Pour moi c'est différent:
FreeBiker souhaite une pondération sur le nombre de notes, ce qui est assez simple, via un order by moyenne, count
Vincent, tu veux un écart-type sur la date. On la stocke vis-à-vis des notes depuis la 1.6 seulement... Et question:
Si un 5 d'hier vaut mieux qu'un 5 d'il y a 2 ans sur la même image( pourquoi???), est-ce qu'un 5 d'il ya deux ans, qui va se retrouver disons à 3 après pondéartion sur la date va être comparé à un 3 d'hier? Lequel a leplus de valeur? pourquoi?
Merci de tes précisions
Hors ligne
Des exemples, des axes de réflexions uniquement.
Je n'ai pas chercher pour l'instant d'articles sur le sujet mais cela m'énerve de voir les 5 anciens et uniques me pourrir le classement.
8-)
Quand on saura comment classer, on verra la question des informations manquantes (il y en a peut être d'autres).
8-)
Hors ligne
Amis mathématiciens, help!
Je penses qu'une aide de mathématiciens statisticiens serait le bienvenu...
Peut-être qu'une discussion avec un sujet plus racoleur pour les statisticiens serait utile?
Hors ligne
mathiasm a écrit:
Pour moi c'est différent:
FreeBiker souhaite une pondération sur le nombre de notes, ce qui est assez simple, via un order by moyenne, count
Vincent, tu veux un écart-type sur la date. On la stocke vis-à-vis des notes depuis la 1.6 seulement... Et question:
Si un 5 d'hier vaut mieux qu'un 5 d'il y a 2 ans sur la même image( pourquoi???), est-ce qu'un 5 d'il ya deux ans, qui va se retrouver disons à 3 après pondéartion sur la date va être comparé à un 3 d'hier? Lequel a leplus de valeur? pourquoi?
Merci de tes précisions
C'est exactement ce que je voudrais faire!
Peut tu m'en dire un peu plus sur le "order by moyenne"
Quel est le fichier à modifier?
Merci ;)
Sans statisticien, quelque chose du genre:
SELECT R.element_id, AVG( R.rate * ( (
TO_DAYS( R.date ) - TO_DAYS( DATE( I.date_available ) ) ) / ( TO_DAYS( CURDATE( ) ) - TO_DAYS( DATE( I.date_available ) ) ) )
) AS rate_bytime
FROM `phpwebgallery_rate` AS R
LEFT JOIN `phpwebgallery_images` AS I ON R.element_id = I.id
GROUP BY element_id
ORDER BY rate_bytime DESC
LIMIT 0 , 15
Avis?
8-)
Hors ligne
VDigital a écrit:
Sans statisticien, quelque chose du genre:
En fait quand je parlais de statisticiens, c'était pour un topo/retour sur expérience des différentes moyennes possibles, ca peut être intéressant.
Mais, c'est vrai que c'est pas utile... pour PWG.
Hors ligne
VDigital a écrit:
SELECT R.element_id, AVG( R.rate * ( (
TO_DAYS( R.date ) - TO_DAYS( DATE( I.date_available ) ) ) / ( TO_DAYS( CURDATE( ) ) - TO_DAYS( DATE( I.date_available ) ) ) )
) AS rate_bytime
FROM `phpwebgallery_rate` AS R
LEFT JOIN `phpwebgallery_images` AS I ON R.element_id = I.id
GROUP BY element_id
ORDER BY rate_bytime DESC
LIMIT 0 , 15
Si vimages gérait des notes... Ce n'est visiblement pas le cas, il n'utilise pas la notation, on lui demanderait bien combien "coûte" cette horreur.
Je ne connais guère que la galerie de Démo qui est très fréquement notée.
Peut-être que z0rglub ou mathiasm pouraient nous donner une indication de la durée de cette "horreur"...?
Cette petite étude m'a donné l'occasion de me rendre compte que coté admin » images » Notation devrait permettre des tris...
Des tris sur Nombre de notes ou Note moyenne ou Controverse ou encore Somme des notes
constitueraient sans doute un plus... (Je ne m'écarte pas du sujet sauf que cela mériterait d'être "discuté").
Si FreeBiker est d'accord, je déplacerai le sujet... (en laissant un lien).
8-)
Hors ligne
Je pense que le probleme n'est pas tellement le cout de la requete, mais son integration.
Dans l'etat actuel il y a plusieurs types de requetes selon qu'on visualise une categorie/tag/calendrier/recherche/most visited etc ... A ce jour la condition pour l'ordre de tri est que les champs utilises pour le tri doivent faire partie de la table #images.
Hors ligne
Pour freebiker,
dans include/section_init.inc.php, ligne 570 ~
Remplacer
SELECT DISTINCT(id) FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id WHERE average_rate IS NOT NULL AND '.$forbidden.' '.$conf['order_by'].' LIMIT 0, '.$conf['top_number'].'
par
SELECT DISTINCT(id), Count(element_id) FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON id = ic.image_id INNER JOIN '.RATE_TABLE.' AS ir ON id = ir.element_id WHERE average_rate IS NOT NULL AND ic.category_id NOT IN (13,23) GROUP BY element_id ORDER BY average_rate DESC, id ASC LIMIT 0, '.$conf['top_number'].'
J'ai testé la requête en clair et ça fonctionne. La mise en forme pour l'intégration dans le code php peut être à revoir (surtout à 2h du mat!).
A toute à l'heure, ce soir
Hors ligne
mathiasm a écrit:
Code:
AND ic.category_id NOT IN (13,23)
Doit être une erreur...
8-)
Hors ligne
Merci mathiasm !
J'ai placé le code, pas de message d'erreur mais pas de changement non plus :-)
Hors ligne
VDigital a écrit:
Sans statisticien, quelque chose du genre:
SELECT R.element_id, AVG( R.rate * ( (
TO_DAYS( R.date ) - TO_DAYS( DATE( I.date_available ) ) ) / ( TO_DAYS( CURDATE( ) ) - TO_DAYS( DATE( I.date_available ) ) ) )
) AS rate_bytime
FROM `phpwebgallery_rate` AS R
LEFT JOIN `phpwebgallery_images` AS I ON R.element_id = I.id
GROUP BY element_id
ORDER BY rate_bytime DESC
LIMIT 0 , 15Avis?
8-)
Par contre ici j'ai ce msg :
[mysql error 1064] You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '( I.date_available ) ) ) / ( TO_DAYS( CURDATE( ) ) - TO_DAYS( D
Hors ligne