Recherche phonétique

Répondre
brodseba
le 17/11/2006 à 02:16
brodseba
Bonjour à tous,

J'ai écrit un article sur la recherche phonétique en PHP.

Cet article décrit une méthode alternative pour faire des recherches dans une base de données. Il est certain que de faire des recherches textuelles (exact string comparaison) et l'utilisation d'expression régulière est très utile. Mais parfois nous avons besoin d'un petit coup de pouce pour trouver ce que nous cherchons. Heureusement pour nos, PHP offre des fonctions qui aide à faire des recherches phonétiques. Ces fonctions peuvent être très puissantes à condition de penser à les utiliser.

Qu'en pensez-vous?
zebden
le 17/11/2006 à 17:10
zebden
Très interressant, je la passe en News ^_^
zebdinou pour les intimes / Blog : http://www.zebden.fr
Bzh
le 17/11/2006 à 17:35
Bzh
Oh ! Genial !

Mais heu, en pratique, comment l'utilise tu pour une recherche dans une BDD ? par exemple ?

Cela demande tout de meme beaucoup de ressources...

Mais idée génial.... Bravo...
LA GLOBULE
le 17/11/2006 à 18:54
LA GLOBULE
Pas forcemment beaucoup de ressource.

MySQL utilise aussi la fonction SOUNDEX (regardez dans la doc).
Pour faire simple, il suffit pour chaque champ texte dans tes tables mysql, de rajouter a coté un champ 'sound' qui contiendra le soundex de chacun des mots de ton texte.

Tu blutes un index fulltext sur ce champ.

Ensuite, pour rechercher, tu lances un SELECT sur ce champs avec une condition du genre MATCH `sound` AGAINST (SOUNDEX('ta recherche')).
(je ne me rappelle plus de la syntaxe de SOUNDEX de mysql. Regarder la doc. Mais vous pouvez aussi directement générer ce soundex via PHP).

En revanche, les fonctions soundex de PHP et de MySQL utilise une prononciation anglaise des mots.
Il existe des algos pour pondre une prononciation à la française, mais c'est assez chiant à implementer dans MySQL.
brodseba
le 18/11/2006 à 07:23
brodseba
C'est très vrai.

J'ai eu de meilleur résultats en utilisant metaphone() cependant. Je sais qu'il existe une algo pour metaphone() en français, mais je n'ai pas trouvé d'implantation en PHP. :-(
brodseba
le 24/11/2006 à 21:20
brodseba
Il semblerait que DoubleMetaphone() donne de bon résultat aussi. Cette algorithme retourne deux clés possible pour un mot, et si je ne me trompe pas, la 2iemm clé prend en considération quelques subtilité de la langue française (et d'autre langue aussi).

C'est à tester.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours