Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2989 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  rechercher dans une base de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

rechercher dans une base de données

n°1345888
letesp
Posté le 13-04-2006 à 11:49:53  profilanswer
 

Bonjour,
 
Je réalise en ce moment un site en PHP/MySQL.  
Un exemple sera plus clair:
 
Un utilisateur entre le mot Sthrasbour dans une zone de texte (oui il est con).
La page web affiche toutes les lignes de la table dont le champs nom_ville ressemble à ce mot.  
 
Quel algo de "comparaison" faut-il utiliser pour réaliser cela?
 
Merci
pierre
 

mood
Publicité
Posté le 13-04-2006 à 11:49:53  profilanswer
 

n°1346609
letesp
Posté le 14-04-2006 à 08:17:45  profilanswer
 

up

n°1346633
nargy
Posté le 14-04-2006 à 09:35:32  profilanswer
 

tu as SOUND LIKE, ou SOUNDEX(), en sql
http://dev.mysql.com/doc/refman/4. [...] tions.html

n°1346635
nargy
Posté le 14-04-2006 à 09:36:38  profilanswer
 

en php, tu as en plus:  levenshtein(), metaphone() et similar_text().
http://fr3.php.net/manual/fr/function.soundex.php

n°1346643
letesp
Posté le 14-04-2006 à 09:41:22  profilanswer
 

merci de tes réponses! je regarde ça tout de suite

n°1346701
rufo
Pas me confondre avec Lycos!
Posté le 14-04-2006 à 10:35:19  profilanswer
 

j'ai testé le soundex de MySQl sur une faute courante : "dans" et "dasn". On obtient D520 et D250. On abient les mêmes lettres et chiffres mais aps dans le bon ordre. Je ne sais pas trop comment interpréter ça : hasard ou normal :??: Par ailleurs, meta_phone fonctionne surtout pour des mots anglais. Le mieux, à mon avis, c'est levenshtein(), mais pas utilisable pour effectuer une requête SQL. en fait, ce qu'il faudrait, c'est une fonction qui prenne en entrée un mot et qui génère tous les mots proches. Ensuite, on recherche dans la BD un des mots de la liste générée. Ce système, ça me fait penser à l'algo breveté par un étudiant américain récemment acheté par Google :)...

n°1346717
nargy
Posté le 14-04-2006 à 10:53:20  profilanswer
 

> "dans" et "dasn"
he oui, soundex ne fonctionne pas sur ce genre de typo: la prononciation des deux mots est différente.
 
Pour le typos et les dislexies levenshtein() fonctionne mieux.
 
Il y a une autre algo (trigraphe), qui compare les lettres 3 par 3, et essaye toutes les combinaisons:
dan -> adn nad and nda dna
 
Il est possible de programmer son propre algo dans Mysql à l'aide d'une fonction.

n°1346737
letesp
Posté le 14-04-2006 à 11:12:56  profilanswer
 

La fonction similar_text est assez sympa. Elle permet d'obtenir un pourcentage de similarité entre la chaine entrée par l'utilisateur et chaque ligne de la table. Ensuite je ne garde que les résultats présentants une similarité supérieure à 60%. Il ne me reste plus qu'à classer les résultats par similarité.  
Par contre, je ne vois pas comment utiliser les résultats de SOUNDEX. Il faut à nouveau comparer ces résultats entre eux. Et SOUNDS LIKE et trop binaire.

n°1346921
rufo
Pas me confondre avec Lycos!
Posté le 14-04-2006 à 14:54:58  profilanswer
 

similar_text() fonctionen dans ton cas car le champ sur lequel tu effectues ta recherche dans la table ne contient qu'un mot, donc ça va, tu peux faire ce post traitement avec PHP. Mais si le champ contenait plusieurs mots, là, ça marche plus (à moins que similar_text() ait été intégré à MySQl depuis)...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  rechercher dans une base de données

 

Sujets relatifs
reprise de données d'une zone de liste multiple ACCESSStockage de données relationnelles volumineuses ?
Faciliter le changement de ma structure de donnéesLire une base de donnée sur PC
[OOoBasic] Import Base dans ExcelFaire une recherche dans une base de données sql server
[RESOLU] Rechercher dans un fichier texte[ résolu ] Mise en page texte & base de données
[VB6] comment rechercher un champ dans une base de données access 
Plus de sujets relatifs à : rechercher dans une base de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR