[résolu] mysql et regexp

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


e-kiwi
Modérateur
Modérateur
 
Messages: 13867
Inscription: Mar Déc 23, 2003 9:04

[résolu] mysql et regexp

Message le Jeu Aoû 03, 2006 15:03

bonjour,

j'ai une table article avec deux champs : art_titre et art_texte
j'ai un nom de société $ent_nom

je cherche à trouver dans ma table article les articles qui citent cette société. pour cela , je recherche la chaine de caractere ent_nom dans mon art_titre et art_texte, mais en ignorant les articles dans lequel ma chaine est précédé ou suivie d'un caractere compris entre A et Z (pour, par exmple, si j'ai une société qui s'appelle CCI, que cela ne me ressorte pas un article contenant le mot "accident")

ma requete est :
$requete2="select * from articles where (art_titre like \"%$ent_nom%\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."[a-z]\") or (art_texte like \"%$ent_nom%\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."[a-z]\")";

vous semble-t-elle correcte ?
Dernière édition par e-kiwi le Ven Aoû 04, 2006 9:27, édité 1 fois.


siddhy
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 163
Inscription: Lun Sep 20, 2004 15:50

Message le Jeu Aoû 03, 2006 15:41

Bonjour,
et si tu met un espace dans le like : like \"% $ent_nom %\" ?
Tu n'aurais plus besoin des regexp..
Non?


Tilt
WRInaute passionné
WRInaute passionné
 
Messages: 818
Inscription: Sam Mar 26, 2005 11:48

Message le Jeu Aoû 03, 2006 22:21

siddhy a écrit:Bonjour,
et si tu met un espace dans le like : like "% $ent_nom %" ?
Tu n'aurais plus besoin des regexp..
Non?


like "% $ent_nom %" or like "$ent_nom %" or like "% $ent_nom"

couvre presque toutes les éventualités.

Sinon en théorie tu peux utiliser \w (caractère de mot), \W (pas de caractère de mot), plutôt que NOT REGEXP, ou bien ^\w+ qui marchent bien en php (j'ignore si ça fonctionne pour mysql).


e-kiwi
Modérateur
Modérateur
 
Messages: 13867
Inscription: Mar Déc 23, 2003 9:04

Message le Ven Aoû 04, 2006 7:49

siddhy et Tilt, ca n'est pas bon :)

siddhy, c'est écrit dans mon message :
>> si j'ai une société qui s'appelle CCI, que cela ne me
>> ressorte pas un article contenant le mot "accident"

Tilt> il suffit que la chaine commence le mot ou le termine et ca ne marches pas

mais c'est bon, j'ai trouvé ce qui marche TOUT LE TEMPS :
$requete2="select * from articles where (art_titre like \"%$ent_nom%\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."[a-z]\" and art_titre NOT REGEXP \"".$ent_nom."[a-z]\" and art_titre NOT REGEXP \"[a-z]".$ent_nom."\") or (art_texte like \"%$ent_nom%\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."[a-z]\" and art_texte NOT REGEXP \"".$ent_nom."[a-z]\" and art_texte NOT REGEXP \"[a-z]".$ent_nom."\")";


siddhy
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 163
Inscription: Lun Sep 20, 2004 15:50

Message le Ven Aoû 04, 2006 8:21

Salut,
Justement, ma réponse empêchait d'avoir "accident"...
Par contre si CCI était en début ou en fin, ça ne le prenait pas en compte..


e-kiwi
Modérateur
Modérateur
 
Messages: 13867
Inscription: Mar Déc 23, 2003 9:04

Message le Ven Aoû 04, 2006 8:29

ah oui je n'avais aps vu les espaces. mais l'autre problème etait effectivement d'actualité. enfin ma moulinette tourne, dans 55mn j'aurai la réponse ^^


siddhy
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 163
Inscription: Lun Sep 20, 2004 15:50

Message le Ven Aoû 04, 2006 8:42

Par contre il me semble que la réponse de Tilt n'était pas mauvaise..

Tilt a écrit:like "% $ent_nom %" or like "$ent_nom %" or like "% $ent_nom"


like "% $ent_nom %" pour les chaines au milieu
like "$ent_nom %" pour les chaines au début
like "% $ent_nom" pour les chaines en fin

Manque plus que le Pb de la ponctuation (par ex :virgule après ta chaine ou point ou ...) a traiter

(ça serait peut être plus rapide ?)

Bon, tu nous tiens au courant pour ta requête ? (dans 42 mn...)
Dernière édition par siddhy le Ven Aoû 04, 2006 8:47, édité 1 fois.


e-kiwi
Modérateur
Modérateur
 
Messages: 13867
Inscription: Mar Déc 23, 2003 9:04

Message le Ven Aoû 04, 2006 8:45

il manque pleins de caracteres :

( ) , ; : ! ? ...

ma méthode inverse (dire tout ce qui n est pas caractere me semble bien plus précise)


siddhy
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 163
Inscription: Lun Sep 20, 2004 15:50

Message le Ven Aoû 04, 2006 8:51

Oui tu doit avoir raison..
Par contre tu as pensé aux majuscules ? ou les regexp de mysql ne tiennent pas compte de la casse?


e-kiwi
Modérateur
Modérateur
 
Messages: 13867
Inscription: Mar Déc 23, 2003 9:04

Message le Ven Aoû 04, 2006 8:55

les articles sont ecrits par les journalistes, donc ca va, ils mettent toujours la majuscule en début de nom de société :)

moulinette fini (plus rapide que prévu) résultat tres convenable :)


Xele
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 109
Inscription: Dim Juil 10, 2005 10:31

Message le Ven Aoû 04, 2006 9:05



siddhy
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 163
Inscription: Lun Sep 20, 2004 15:50

Message le Ven Aoû 04, 2006 9:05

je parlais des majuscules pour "ACCIDENT" par exemple...


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités