Programmation » Recherche via query MySQL...
Catégorie:  
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 01:18:23,
Par zion
Comme il y a plus d'idées dans 2 têtes que dans une, je lance un avis à la solution la plus simple à implémenter ( je suis un peu fade sur ce coup là :joce: ).

J'ai une table avec des items (des produits) et pour la recherche, on me demande que:

saint-jacques
saint jacques

renvoie toujours le produit saint-jacques, quoi qu'il arrive. (en généralisant bien sûr). Il faut donc condenser et ne garder que les lettres en virant les caractères spéciaux.

C'est sur une table existante en MySQL, j'ai la flemme de me faire une fonction pour condenser le tout et le j'ai jamais testé le full text search de MySQL (est-ce qu'il prévoit ce genre de choses? :figti: ).

Donc ma solution actuelle ce serait de rajouter un champ et de le "condenser" à chaque modif et de me baser la dessus pour la recherche.

Any better idea?
Je suis le Roy :ocube:
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 02:00:05,
Par max
tu as essayé soundex(str) ?

SOUNDEX(str)

Returns a soundex string from str. Two strings that sound almost the same should have identical soundex strings. A standard soundex string is four characters long, but the SOUNDEX() function returns an arbitrarily long string. You can use SUBSTRING() on the result to get a standard soundex string. All non-alphabetic characters in str are ignored. All international alphabetic characters outside the A-Z range are treated as vowels.



avec ton exemples:
select
soundex('saint-jacques'),
soundex('saint jacques'),
soundex('saint jacque'),
soundex('saintjacque');


renvoit 'S532' pour les quatres cas.



Dernière édition: 03/10/2006 @ 02:00:41
Trololo
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 09:47:35,
Par ovh
P'tain intéressant ça, je note :write:
Je n'ai rien à voir avec www.ovh.com
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 10:35:09,
Par gizmo
Le probleme avec soundex, c'est que ce n'est pas locale, donc ici tu as de la chance parce que la prononciation anglaise de tes exemples matche bien, mais ce n'est pas toujours le cas. De meme, te risque de te chopper seint-jack comme son identique, ce qui n'est pas specialement ce qui est demande.
Concept vivant.
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 11:43:54,
Par etik
Perso, j'utilise la function levenshtein() de PHP. Calcule la 'distance' entre deux strings tout comme similar_text() mais j'ai de meilleur resultat avec levenshtein().
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 12:13:12,
Par philfr
Pour ton cas particulier, peut-être vaut-il mieux que supprimes tous les caractères non alpha, et que tu convertisses tout en majuscules p.ex.

Sauf si tu veux aussi que ton exemple matche avec sain-jaques... Mais alors tu entres dans le monde du flou et de l'approximatif qui ne colle pas très bien avec le traitement algorithmique de l'information. À part faire comme google et indexer toutes les orthographes approximatives...
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 12:44:06,
Par zion
Merci pour les réponses :dawaaa:

philfr> Je pense que j'ai pas le choix parce qu'en fait, si le mec cherche "jacques", ça doit aussi me renvoyer Saint-Jacques alors que SoundEx ne va pas me le faire vu qu'il travaille sur tout le string (je suppose :oh: ).

Pareil avec levenshtein() (que je ne connaissais pas du tout, merci!), sauf que la en plus je devrais le faire en PHP alors que j'ai toutes mes données (et parfois un gros pavé de texte) dans une table MySQL.

Ca deviendra donc SAINTJACQUES et je vais faire comme avant... un like comme une brute :sweat:

Dernière édition: 03/10/2006 @ 12:44:22
Je suis le Roy :ocube:
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 13:51:50,
Par cauet
Comme le dit gizmo, j'ai vite abandonné SoundEx() à cause des locales.. il peux te pomper des mots qui sont phonétiquements corrects.. dans une autre langue!
J'avoue n'avoir jamais plaçé cette fonction dans mon code, c'est très très spécifique.
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 14:06:07,
Par ovh
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 14:19:36,
Par zion
ovh> Alors ça c'est pas mal du tout comme fonction, je vais l'essayer tiens!
Je suis le Roy :ocube:
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 14:54:03,
Par zion
There is a chance that you may have found a bug in the SQL parser. Please examine your query closely, and check that the quotes are correct and not mis-matched. Other possible failure causes may be that you are uploading a file with binary outside of a quoted text area. You can also try your query on the MySQL command line interface. The MySQL server error output below, if there is any, may also help you in diagnosing the problem. If you still have problems or if the parser fails where the command line interface succeeds, please reduce your SQL query input to the single query that causes problems, and submit a bug report with the data chunk in the CUT section below:
----BEGIN CUT----
eNqFjs1ugkAUhffzFGfhQhPAgUqF2SGOP8nA0BmqaXdUSEuCQEEb+xo+cbFddNFFc3f3nvt9hysl
FUNoI3QgeMwwm2PmwZ5TotPhciUk3GmG0TZn6N+rNuv6orOq8sVq31rjA47l3MGhdDal3pT6oDZz
HOb6qIqjD35pMSLRp34QA9qiluOa/Smr86zLzap5JY9aQWoDwZrHqYEdH5z7skYkn7dCBHAtSpIo
YIPn3qJmWzkk2SS3nCH1DTkMRFmfL0QE8ZqhqM2yb0zPc33TJt9ezQUPUyRdk8fZsVh1BqIgDTcY
/64mQ4NgG+sU46sIXbqNsZBS8CAeqiz5BFmP/tB0BVkpGaEdHs+HU0/2G674/7gr/gCJVEuusHj6
4WLJdfgF3nptEQ==
----END CUT----
----BEGIN RAW----

ERROR: C1 C2 LEN: 47 48 170
STR: ’


Ca a l'air d'aller d'enfer :ciler:

:neowen:
Je suis le Roy :ocube:
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 14:57:24,
Par zion
Bon, .... en cherchant un peu ca a pas l'air super efficace ce match in boolean mode, LC50 me renvoie 0 pour LC-50, supaire :itm:

On va donc se la jouer bourrin comme prévu :dawa:
Je suis le Roy :ocube:
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 17:15:37,
Par antp
Tu testes pas le fulltext avant ? (ça fait un bout de temps que je me dis que je devrais le tester pour la recherche des titres sur imcdb, je ne l'ai toujours pas fait)

Dernière édition: 03/10/2006 @ 17:16:07
mes programmes ·· les voitures dans les films ·· champion des excuses bidons
   
Recherche via query MySQL...
Publié le 03/10/2006 @ 17:36:22,
Par zion
Le full-text est pas prévu pour ça non plus :spamafote:
Je suis le Roy :ocube:
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?