[SQL] recherche textes similaires

lesbonsplansdesophie

WRInaute occasionnel
Bonjour,

Quelqun connait une fonction qui permet de rechercher des champs texte similaires dans une base SQL ?

Plus clairement, imaginons que j'ai une table avec un champ "MOT" et que celle-ci contient:
voiture
voiturette
maison
chien

une requete du style "SELECT MOT FROM TBL WHERE MOT 'resssemble a' voiture", qui me renverrait voiture et voiturette ?

Je sais qu'en php il existe des fonctions d'anlyse de similarite (similar-text, levenshtein etc.) et je voudrais savoir si il existe une fonction pour le faire directement en SQL...

Merci de votre aide !
 

Phobos

WRInaute impliqué
Salut,
Code:
SELECT mot FROM tbl WHERE mot LIKE '%voiture%'
te renverras les résultats contenant mot motion émotion moteur motricité etc ;)
 

lesbonsplansdesophie

WRInaute occasionnel
Merci, malheureusement je n'ai pas ete assez explicite et mon exemple etait trop simple :?

En fait je cherche une fonction capable de savoir que
"Le chien jaune court dans la prairie le matin et tout les francais sont contents et sautent de joie"
est tres proche de
"Un chien jaune court dans la prairie et tous les francais sont content"

(pardonnez moi l'exemple bidon mais j'ai un mal de crane pas possible)

En php avec similar_text ou levhenstein c'est facile, en sql je me demandais si il y avait une fonction toute faite ?
 

sgaze

WRInaute occasionnel
Phobos a dit:
Salut,
Code:
SELECT mot FROM tbl WHERE mot LIKE '%voiture%'
te renverras les résultats contenant mot motion émotion moteur motricité etc ;)

euh là tu t'es gouré. "mot" c'est le nom du champ, pas son contenu.
Ca va renvoyer voitures, voiturettes, totovoiture mais pas moteur !
 

Phobos

WRInaute impliqué
oui effectivement, j'ai lapsé :lol:
désolé mais je ne vois pas quelle syntaxe permettrait cela, tu peux utiliser les expressions régulières dans la recherche mais ça ne suffit pas pour faire ce que tu veux, après recherche, il y a similar mais ce doit être pareil que like :(
 

lesbonsplansdesophie

WRInaute occasionnel
Non, car comme je le disais plus haut je cherchais exactement l'equivalent de cet algorithme, mais en SQL. Et ca existe, c'est le fameux full search dont je parle dans mon dernier post :lol:

Merci quand meme :wink:
 

herve01

WRInaute discret
J'ai testé le FULLTEXT ça fonctionne parfaitement (avec les tables de types MyISAM uniquement, donc adieu InnoDB et les clés étrangères).

Il faut voir aussi la clause WITH QUERY EXPANSION, très puissante.
 

Discussions similaires

Haut