|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Invité de passage
![]() |
Re Bonjour tout le monde
Je reviens encore avec mes problèmes (il y en a un autre et se serra fini J'ai créer une petit moteur de recherche en FULLTEXT (et LIKE si l'on veut rajouter des critères à la recherche) Bon bref c'est pas terrible et je suis consient de pas être un pro du PHP. MAIS et je dis bien mais, un problème persiste. La recherche fonctionne, SAUF sur un client (et seulement 2 caractère je ne sais pourquoi) Je vous explique : Voici ma table : Code SQL :
Et Voici l'endroit ou ça foire : Code :
Alors que Code :
Au cas ou voici un bout d'mon code php (la partie requete pour la recherche) Code :
Merci beaucoup à vous tous |
||||||||
|
|
00
|
|
|
#2 | |
|
Membre actif
![]() |
extrait du manuel mysql en ligne dans une partie qui parle de MATCH... AGAINST
Citation:
cl est trop court |
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
La recherche est en BOOLEAN donc pas de problème au niveau du nombre de caractère.
Et si la recherche était trop courte pourquoi alors trouver une autre ligne lorsque je recherche "cl" (regarde mon post de départ tu comprendras mieux) Merci quand même |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() |
et il te renvoit autre chose?
il se pourrait qu'un autre enregistrement corresponde mieux... ou alors essaye de mettre dans les autres champs des . histoire de voir si jamais ce ne serait pas le . qui gènerait pour la recherche... |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() |
Non le . ne dérange pas puisqu'avec le 2 eme exemple que je vous donne ça marche.
Et même si je change les 2 caractère du premier exemple ça ne marche pas. Et pour reprendre mon premier post : (1, 'Particuliers', 'Badouhe', 'Cladee', NULL, NULL, '21 bis nan tu sauras pas', '', '57950', 'Icibas', '0344444444', NULL, '0666666666', NULL, NULL, 'cl.bau zer@free.fr', 'Famille\r\n', 28), La recherche avec "cl" fonctionne parfaitement |
|
|
00
|
|
|
#6 |
|
Membre éprouvé
![]() Inscription : février 2004 Messages : 456 ![]() |
Salut,
jpose toujours la question au cas où.. est-ce que tu fais des echo de tes requêtes pour les tester directement dans phpMyAdmin? |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() |
Oui bien sur
|
|
|
00
|
|
|
#8 |
|
Membre éprouvé
![]() Inscription : février 2004 Messages : 456 ![]() |
J'ai été relire la doc et ils ne disent nulle part que les mots de 3 lettres ou moins ne sont pas ignorés en mode Boolean...
Ce qui est donc bizarre c'est qu'il te renvoie des résultats pour la recherche 'cl'... |
|
|
00
|
|
|
#9 |
|
Membre actif
![]() |
la requête renvoit quelquechose ou rien?
on sait qu'elle ne renvoit pas ce qu'il faut, mais ça donne quoi ? un autre enregistrement avec les lettres?
__________________
Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. (\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant. Spidercochon, spidercochon, il peut marcher au plafond ...MM ......Voici Spidercochon. Aidez le à conquérir le monde E(....)~....en le reproduisant. ...w |
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() |
La requete ne renvoie rien.
Non pas d'autre enregistrement apparement (même avec LIKE) La requête : Code SQL :
|
||
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() |
Hum en fait il trouve les autre ligne car "cl" par exemple est présent ailleur que dans le champs mail.
L'opérateur * ne match pas les "." Y aurait-il une astuce ? (sans reconfigurer le nombre de caractère minimum admis dans la recherche FULLTEXT svp...) |
|
|
00
|
|
|
#12 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Je reformule ta recherche ainsi : "trouver dans une série de colonne si au moins l'une d'entre elle contient un mot commençant par jl et pouvant contenir les divers caractères admis dans une adresse e-mail (donc pas d'espace)".
Si ma définition est bonne, tu peux utiliser une expression régulière : Code :
|
||
|
|
00
|
|
|
#13 | |||
|
Invité de passage
![]() |
Merci beaucoup à toi (dommage que je ne maitrise pas REGEXP ça a l'air très puissant !)
J'ai donc reformulé ma requete qui maintenant est : Code :
Citation:
En attendant je te demande un peu d'aide de se côté. Bien sur je peux comprendre que tu n'ais pas envie de refaire ma requête et te prendre la tête la dessus Encore une fois merci (à toi et à vous tous ! |
|||
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Les regex n'ont rien à voir avec la recherche FULLTEXT. Il n'y a donc ni AGAINST ni BOOLEAN MODE avec REGEXP, et il faudra que tu isoles le cas hl* de ceux que tu veux traiter avec MATCH.
Pour ce qui est de la syntaxe à utiliser, c'est pile poil celle que je t'ai donnée : CONCAT_WS(' ', colonnes) REGEXP 'expression'. |
|
|
00
|
|
|
#15 | ||
|
Invité de passage
![]() |
Voici ma requête maintenant :
Code :
Je dis qu'il fait bien la recherche car mon script surligne le résultat... Et même si les 2 caractère n'apparaisse pas il affiche le même résultat |
||
|
|
00
|
|
|
#16 | |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
|
|
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 1 ![]() |
Bonjour, voici un script en php 5 qui permet de faire ce genre de recherche fulltext, avec résultats par pertinence, sans charger le serveur mysql ni la mémoire allouée aux scripts php (fonctionne avec des regexp).
Moteur de recherche fulltext en php 5 Il faut juste configurer les tables à scanner et quelques autres choses. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com