Afficher les articles relatifs à celui consulté en PHP/MySQL
28 messages
• Page 1 sur 2 • 1, 2
-

milkiway - WRInaute accro

- Messages: 4910
- Inscription: 3 Fév 2004
Afficher les articles relatifs à celui consulté en PHP/MySQL
Salut,
Je voudrais afficher sur mes articles un bloc "Vous aimerez également :" suivi d'une liste de 5 articles pas forcément de la même catégorie dans le site mais dont les titres laissent à penser qu'ils sont similaires.
Exemple : titre "L'Audi A8 W16, missile de luxe"
et que ça puisse me sortir dans "Vous aimerez également :" l'article que j'ai écris le mois dernier "Bugatti Veyron W16 : l'action de Total monte en flèche".
Quelqu'un aurait un tuto ou une piste technique pour sortir ça ?
Un grand merci
PS : j'imagine que ça fonctionne à grand renforts d'explode et de like % ?
Je voudrais afficher sur mes articles un bloc "Vous aimerez également :" suivi d'une liste de 5 articles pas forcément de la même catégorie dans le site mais dont les titres laissent à penser qu'ils sont similaires.
Exemple : titre "L'Audi A8 W16, missile de luxe"
et que ça puisse me sortir dans "Vous aimerez également :" l'article que j'ai écris le mois dernier "Bugatti Veyron W16 : l'action de Total monte en flèche".
Quelqu'un aurait un tuto ou une piste technique pour sortir ça ?
Un grand merci
PS : j'imagine que ça fonctionne à grand renforts d'explode et de like % ?
-

UsagiYojimbo - WRInaute accro

- Messages: 8565
- Inscription: 23 Nov 2005
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
Je gérerais davantage ça en créant un système d'association d'article, un article pouvant être associé à n autres.
Ou si tu veux automatiser cela (ce qui me semble être le cas vu qu'une partie des titres est identique) ça peut en effet se faire via une recherche sur les autres titres d'articles présent dans ta base, après avoir nettoyé ceux-ci des mots inutiles (pronoms, déterminants, conjonctions diverses).
Ou si tu veux automatiser cela (ce qui me semble être le cas vu qu'une partie des titres est identique) ça peut en effet se faire via une recherche sur les autres titres d'articles présent dans ta base, après avoir nettoyé ceux-ci des mots inutiles (pronoms, déterminants, conjonctions diverses).
-

milkiway - WRInaute accro

- Messages: 4910
- Inscription: 3 Fév 2004
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
Merci c'est ce que j'ai commencé à faire. J'ai déjà 600 articles et je ne peux/vais pas les associer à la main ni en automatique.
Je suis parti sur du str_replace pour virer les "le, la, les, des, du, au" etc., explode, like et ça devrait rouler.
Je suis parti sur du str_replace pour virer les "le, la, les, des, du, au" etc., explode, like et ça devrait rouler.
-

UsagiYojimbo - WRInaute accro

- Messages: 8565
- Inscription: 23 Nov 2005
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
Le souci c'est qu'en automatisant, tu risques à un moment d'avoir des listes d'articles non négligeables de conseillés en-dessous d'un article.
-

Julia41 - WRInaute passionné

- Messages: 1761
- Inscription: 31 Aoû 2007
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
Regarde la méthode utilisé par le plugin wordpress "related post".
Je pense qu'il faut partir sur des % LIKE et des bons gros preg_match, mais par la suite, les faire à la main pourrait être pas mal.
Edit: j'ignore quel module c'est sur PHPBB, mais matte un peu en dessous de la réponse "sur ce thème".
Un moteur google peut être pas mal sinon pour faire ce genre de chose (à vérifier bien sûr)
Je pense qu'il faut partir sur des % LIKE et des bons gros preg_match, mais par la suite, les faire à la main pourrait être pas mal.
Edit: j'ignore quel module c'est sur PHPBB, mais matte un peu en dessous de la réponse "sur ce thème".
Un moteur google peut être pas mal sinon pour faire ce genre de chose (à vérifier bien sûr)
-

milkiway - WRInaute accro

- Messages: 4910
- Inscription: 3 Fév 2004
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
UsagiYojimbo a écrit:Le souci c'est qu'en automatisant, tu risques à un moment d'avoir des listes d'articles non négligeables de conseillés en-dessous d'un article.
Non tinquite, je croise avec d'autres critères et je limite a 5 articles.
-

RiPSO - WRInaute passionné

- Messages: 1591
- Inscription: 4 Oct 2007
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
Perso je verrai bien en premier un traitement sur le titre qui remplace tous les caracteres non alphanumeriques par des espaces, ensuite un explode sur les caracteres d'espace, et tu te construis une requete avec une boucle for et des LIKE avec le tableau que t'as obtenu avec l'explode (en ne gardant que les mots de plus de deux caracteres par exemple).
Autre chose pour la précision tu peux additionner le nombre de mots qui matchs bien
(je garanti pas la rapidité, c'est juste pour te donner des idées)
Pour exemple essaye une requete du style :
t'as juste à remplacer tatable par le nom de ta table d'articles, et TITRE par le champ qui correspond aux titres de tes articles, et les mots que tu recherches. Je t'ai mis les mots audi, a8, et w16 pour rester dans ton exemple
Si t'as beaucoup d'affluence regarde au niveau temps de réponse d'une telle requête...
Après ça dépend de ton serveur et du nombre de tes articles, mais les LIKE c'est pas forcement très rapide...
Fais des tests, si ca te pénalise trop tu peux aussi précalculer et enregistrer en bdd dans un nouveau champ pour chaque article... genre quand tu créé un article ca te calcul direct les articles similaires, et t'enregistres les id des articles séparés par des virgules dans un champ tinytext.
Limite si tu veux que ce soit actualisé tu te fais un script en tache cron qui se lance une fois de temps en temps en pleine nuit et qui recalculera tout ça...
Autre chose pour la précision tu peux additionner le nombre de mots qui matchs bien
Pour exemple essaye une requete du style :
- Code: Tout sélectionner
SELECT *, (TITRE LIKE '%audi%') AS TEST1, (TITRE LIKE '%a8%') AS TEST2, (TITRE LIKE '%w16%') AS TEST3 FROM `tatable` ORDER BY (TEST1+TEST2+TEST3) DESC
t'as juste à remplacer tatable par le nom de ta table d'articles, et TITRE par le champ qui correspond aux titres de tes articles, et les mots que tu recherches. Je t'ai mis les mots audi, a8, et w16 pour rester dans ton exemple
Si t'as beaucoup d'affluence regarde au niveau temps de réponse d'une telle requête...
Après ça dépend de ton serveur et du nombre de tes articles, mais les LIKE c'est pas forcement très rapide...
Fais des tests, si ca te pénalise trop tu peux aussi précalculer et enregistrer en bdd dans un nouveau champ pour chaque article... genre quand tu créé un article ca te calcul direct les articles similaires, et t'enregistres les id des articles séparés par des virgules dans un champ tinytext.
Limite si tu veux que ce soit actualisé tu te fais un script en tache cron qui se lance une fois de temps en temps en pleine nuit et qui recalculera tout ça...
-

Leonick - WRInaute accro

- Messages: 19587
- Inscription: 8 Aoû 2004
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
j'utiliserais plutôt des regexp dans la requête : ça éviterait ainsi de sélectionner des morceaux de mots, du genre like "%audi%" qui te ressortirait aussi "bon matériel audio" 
-

RiPSO - WRInaute passionné

- Messages: 1591
- Inscription: 4 Oct 2007
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
bin faut tester...
par contre moi j'aurais plutot mis un preg_replace pour retirer les caractères non alpha numériques...
tu compte te faire un tableau des caracteres à retirer avec ton str_replace?
[edit] benchmark entre str-replace et preg_replace : http://www.php-scripts.com/php_diary/011303.php3
par contre moi j'aurais plutot mis un preg_replace pour retirer les caractères non alpha numériques...
- Code: Tout sélectionner
$ret=preg_replace("/\W/"," ",$tonTitre);
tu compte te faire un tableau des caracteres à retirer avec ton str_replace?
[edit] benchmark entre str-replace et preg_replace : http://www.php-scripts.com/php_diary/011303.php3
-

milkiway - WRInaute accro

- Messages: 4910
- Inscription: 3 Fév 2004
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
Merci mais je ne comprends rien aux regex.
Prenons un exemple :
Allumettes de pomme de terre façon Cuisinetoo (reblochon)
Quel regex pour en sortir
allumettes
pommes de terre
reblochon
J'ai bien sur isolé pomme de terres par un str_replace (je le remplace par un chiffre).
?
Prenons un exemple :
Allumettes de pomme de terre façon Cuisinetoo (reblochon)
Quel regex pour en sortir
allumettes
pommes de terre
reblochon
J'ai bien sur isolé pomme de terres par un str_replace (je le remplace par un chiffre).
?
-

Leonick - WRInaute accro

- Messages: 19587
- Inscription: 8 Aoû 2004
Re: Afficher les articles relatifs à celui consulté en PHP/MySQL
dans leur 1° benchmark, ils n'ont pas utilisé str_replace de façon efficiente, ce qui fait que sa performance était moindre. En utilisant str_replace(array("-","."," ","(",")"),"", $phone); ils auraient gagné un facteur de 5 quasiment
milkiway a écrit:Allumettes de pomme de terre façon Cuisinetoo (reblochon)
Quel regex pour en sortir
allumettes
pommes de terre
reblochon
- Code: Tout sélectionner
select * from tatable where title regexp "(allumettes|pommes de terre|reblochon)"
28 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Afficher les 10 derniere insert d'une table Mysql avec php ?
- [PHP/MYSQL] Les articles les plus commentés
- Afficher les derniers articles Wordpress
- SPIP - comment afficher les derniers articles
- Problème pour afficher mes articles sur ma page FB !
- Afficher liste articles par catégories sous WORDPRESS
- Script ou logiciel pour ajouter/afficher des articles
- Afficher des articles dans une page sous WordPress
- Afficher des articles trouvés sur le web en citant la source
- Afficher les titres des articles spip sur l'index en HTML
- Google propose le lien Votre publicité sur ce site dans AdSense - 23-11-2005
- Google News sort de sa version bêta - 24-01-2006
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Articles sur Google et le référencement - 22-11-2002
- Ecrire un sitemap pour Google News - 25-11-2006
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- De la publicité AdWords sur les pages des partenaires Google News - 17-03-2009
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
