OVH Cloud OVH Cloud

Recherche de texte _approximative_

5 réponses
Avatar
Erwann Thoraval
Bonjour,

Apres avoir parcouru la documentation de MySQL, je n'ai pas trouve
de reponse.

Je voudrais creer des requetes cherchant une chaine de caracteres
dans un des champs d'une table, mais en mode approximatif.

Par exemple, si ma table contient :

+---+------------------------------------------+
| 1 | I like seafood. |
| 2 | I would like to eat seafood. |
| 3 | You have a blue car. |
+---+------------------------------------------+

...j'aimerais trouver les lignes qui contiennent _approximativement_
le mot 'seafod' (avec un seul 'o'), c'est-a-dire les lignes 1 et 2.

SQL propose bien des jokers comme '%' ou '_' mais ils ne permettent pas
de faire ce type de recherche.

Si quelqu'un a des pistes...

--
Erwann

5 réponses

Avatar
Thibaut Allender
on 7/06/2004 11:17, Erwann Thoraval wrote :

+---+------------------------------------------+
| 1 | I like seafood. |
| 2 | I would like to eat seafood. |
| 3 | You have a blue car. |
+---+------------------------------------------+

...j'aimerais trouver les lignes qui contiennent _approximativement_
le mot 'seafod' (avec un seul 'o'), c'est-a-dire les lignes 1 et 2.

SQL propose bien des jokers comme '%' ou '_' mais ils ne permettent pas
de faire ce type de recherche.



hello,

regarde du coté de soundex()
details sur http://dev.mysql.com/doc/mysql/en/String_functions.html

--
thibaut allender | freelance | web|system developer|designer
+32 496 26 75 76 | http://capsule.org *new version*
Avatar
Michaël
Salut Erwann,

Le 07.06.2004 11:17, Erwann Thoraval a écrit :
...j'aimerais trouver les lignes qui contiennent _approximativement_
le mot 'seafod' (avec un seul 'o'), c'est-a-dire les lignes 1 et 2.



Regarde du côté des index "full-text", ça devrait, je pense, répondre à ta
demande. Voici un lien vers la doc mysql :

http://dev.mysql.com/doc/mysql/en/Fulltext_Search.html

Cdt,
Michaël
Avatar
Bruno Baguette
Thibaut Allender wrote:

regarde du coté de soundex()
details sur http://dev.mysql.com/doc/mysql/en/String_functions.html



Bonjour,

Pas grand chose à rajouter si ce n'est que soundex() ne fonctionne
qu'avec des mots en anglais, à ma connaissance.

Les résultats de soundex avec des mots en français sont assez aléatoires.

Cordialement,

--
----------------------------------------
Bruno Baguette -
Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
Avatar
Fred BROUARD - SQLpro
non, soundex n'est pas spécialement adapté qu'à la langue anglaise... Mais en revanche Soundex n'est fait que pour
traiter des noms pas des mots.

A +

Bruno Baguette a écrit:
Thibaut Allender wrote:


regarde du coté de soundex()
details sur http://dev.mysql.com/doc/mysql/en/String_functions.html




Bonjour,

Pas grand chose à rajouter si ce n'est que soundex() ne fonctionne
qu'avec des mots en anglais, à ma connaissance.

Les résultats de soundex avec des mots en français sont assez aléatoires.

Cordialement,




--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Fred BROUARD - SQLpro
il n'existe aucune fonction simple permettant ce genre de recherche.

En revanche il existe une multitude de techniques toutes plus ou moins complexes et lourdes...

Le plus simple étant de faire une indexation textuelle et proposer des mots "dégradés" si la correspondance exacte n'est
pas trouvée...

A lire :
http://sqlpro.developpez.com/IndxTxt/SQL_IndxTXT.html

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************

Erwann Thoraval a écrit:
Bonjour,

Apres avoir parcouru la documentation de MySQL, je n'ai pas trouve
de reponse.

Je voudrais creer des requetes cherchant une chaine de caracteres
dans un des champs d'une table, mais en mode approximatif.

Par exemple, si ma table contient :

+---+------------------------------------------+
| 1 | I like seafood. |
| 2 | I would like to eat seafood. |
| 3 | You have a blue car. |
+---+------------------------------------------+

...j'aimerais trouver les lignes qui contiennent _approximativement_
le mot 'seafod' (avec un seul 'o'), c'est-a-dire les lignes 1 et 2.

SQL propose bien des jokers comme '%' ou '_' mais ils ne permettent pas
de faire ce type de recherche.

Si quelqu'un a des pistes...