Aller au contenu

Fonction 'recherche' dans une base de données


Anonymus

Sujets conseillés

Bonsoir,

En haut à droite, il y a le bouton 'rechercher'. Lorsque l'on lance la recherche, un script jettes un oeil dans la base, à la recherche d'occurences semblables à la chaine renseignée. Le principe est de ne pas tester toutes les formes possibles de déclinaisons de chaque mot. Ceci alourdi les scripts inutilement. Donc :

Pour effectuer cette recherche, on peut utiliser les fonctions : similar_text et soundex.

Similar_text calcule la similarité entre deux chaines, et renvoie : soit le pourcentage de similarité, soit le nombre de caractères identiques.

Pour un mot donné, soundex renvoie une chaine de 4 lettres, correspondant à la facon dont on prononce ce mot. Pour 2 mots différents, si l'on compare les 4 lettres de chaque, on peut voir s'ils se prononcent pareil, et donc s'il y a des chances qu'ils soient similaires. Seul probleme, c'est que ca marche très bien pour l'anglais....mais pas pour le francais. Il y aurait une version francaise, mais non distribuée avec php.

Votre avis ?

Voilà, A+, Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

Salut anonymus,

A ma connaissance, la recherche dans Invision se fait sur base d'un "exact match" et non en utilisant un algo du type soundex.

Une recherche sur "soundex" donne d'ailleurs bien ton article alors qu'une recherche sur le mot "sondex" ne donne rien (enfin jusqu'à maintenant car je viens d'ajouter ce mot en l'utilisant dans ce post ;) )

Il est vrai que l'algorithme soundex est ancien et uniquement adapté à la langue anglaise. Il existe quelques scripts dans différents langages dont php qui essyent d'adapter soundex à la langue française, et y réussissent plus ou moins bien (plutôt moins que plus, d'ailleurs)

Soundex a été décrit par Donald Knuth dans "The Art Of Computer Programming, vol. 3: Sorting And Searching", Addison-Wesley (1973), pp. 391-392. qui a déjà 30 ans et n'a pas énormément évolué depuis, malgré la publication de soundex2 et soundex3.

Je pense que les bases de données telles que mySQL n'offriront jamais le support pour un soundex français, comme elles en sont toujours au soundex originel.

Dan

PS: pour quelle raison forces-tu tous tes messages à s'afficher en gris?... cela doit les rendre peu lisibles pour ceux qui ont un écran vieillissant.

Lien vers le commentaire
Partager sur d’autres sites

Bien noté pour soundex.. Dommage, j'avais trouvé la fonction intéressante.

Pour exact match, si c'est le nom d'une fonction, elle m'intéresse. Si c'est une anglo-façon de dire 'terme exacte', c'était un peu le probleme soulevé : Rechercher un peu plus que le terme exacte, chercher aussi les termes approximatifs.

Lorsque la requete n'a rien retourné, ce peut etre intéressant d'envoyer des résultats, (avec mises en garde), pour dire : "Vous avez peut etre fait une erreur de frappe, les mots se rapprochant sont : .....";

Voilà, A+, Anonymus.

J'aime bien, gris : Ca personnalise le message, non ?

C'est vrai que j'ai pas de problemes d'écran. J'ai déjà arreté d'écrire en plus petit pour ceux qui avaient des problemes de vue ;)

Je vais donc essayer en italique

ou en bold en gris bold ;)

:D

Lien vers le commentaire
Partager sur d’autres sites

:lol: C'est mieux ainsi, car plus lisible même sur un bon écran!

Le "exact math" était une formulation anglo-saxone, et non une fonction ;)

Tu devrais regarder du côté de Htdig, qui a différents algorithmes de recherche intégrés (dont une recherche approximative et une basée sur soundex).

Dan

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...