|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre expérimenté
![]() |
Bonjour à tous,
Je possède une table avec des noms de ville et mon application propose la recherche d'une ville par son nom. Au lieu de me baser sur une strict égalité, j'aimerais proposer à l'utilisateur un jeu de résultats plus ou moins pertinent. Par exemple s'il tape "Touloe", j'aimerais lui renvoyer : - Toulon : 92% - Toulouse : 76% - Toul : 59% etc. Est-ce possible avec PostgreSQL ? Merci à vous, A bientôt |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : mars 2005 Messages : 577 ![]() |
Bonjour,
je crois que ce que tu cherches s'appelle du full text search. Tu peux regarder les fonctions de ranking.
__________________
Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros! Code C :
|
||
|
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() |
Merci pour ta réponse.
J'ai lu attentivement et ça à l'air de matcher les mots exacts, en y ajoutant des fonctionnalités de pondération, prise en compte de la longueur du document ainsi que des dictionnaires pour gérer des synonymes, des mots à ignorer etc. Les données adresses que j'aurai en entrée seront saisies par des utilisateurs de sites web où un opérateur au téléphone, par conséquent, je m'intéresse dans un premier temps aux fautes de frappes ou d'orthographe des mots. En fait j'aurai besoin de ces fonctionnalités où mon dictionnaire serait les lettres de l'alphabet et qui gérerait le côté consécutif des lettres ainsi que la longueur. C'est faisable ça ? Sinon je ferai une fonction, mais utiliser un truc intégrer à PostgreSQL me rassurerait sur les performances.. Merci à toi, A bientôt |
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() |
Je pense que j'ai trouvé mon bonheur avec ceci : http://www.postgresql.org/docs/8.4/s...ystrmatch.html qui implémente la Distance de Levenshtein
J'ai créé une fonction qui part de 100 et soustrait la distance de Levenshtein multipliée par un coefficient d'importance selon le type de donnée (genre se planter de pays est plus important que se planter de ville qui est plus important que se planter de rue puis de numéro). Et pour chacune de ces données, se planter de 3 caractères est plus grave que de se planter de deux caractères. Merci encore |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Inscription : mars 2005 Messages : 577 ![]() |
La distance de Levenstein est une bonne méthode pour déterminer le nombre de transformations nécessaires pour passer d'une chaîne à l'autre donc si ton but est de détecter les fautes de frappes, c'est une bonne idée
__________________
Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros! Code C :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com