Précision du Like '%valeur%' ?? [MySQL/PHP] - PHP - Programmation
Marsh Posté le 15-09-2010 à 14:55:17
ben...
Code :
|
ou alors j'ai pas compris la question...
Marsh Posté le 15-09-2010 à 15:17:28
Tu peux même limiter un peu plus éventuellement en faisant ça :
Code :
|
le 2, c'est la tolérance : tu peux mettre 1, 2, 3 voire plus.
Marsh Posté le 15-09-2010 à 15:21:20
Citation : une base de donnée SQL |
SQL server ? ou SQL comme utilisant le langage SQL, et dans ce cas, Oracle ? MySQL ? Access ? autre ?
Il existe peut-être soundex ou quelque chose d'approchant comme similar_text ou levenshtein.
En tous cas, cela existe en PHP, voir http://php.net/manual/fr/function.soundex.php
Marsh Posté le 15-09-2010 à 15:56:31
ou utiliser une vrai couche de moteur de recherche comme sphinx , ou un moteur de recherche externe comme lucene/solr
ce que tu cherches a faire ( travailler sur la racine des mots ) s'appelle le steming , il me semble
Marsh Posté le 15-09-2010 à 16:02:38
Le steming, ça marche pas trop mal pour l'anglais, j'avais trouvé une adaptation GPL pour le français, mais franchement, ça marche pas terrible Mieux vaut utiliser une BD linguistique, comme Lexique.org (la v3) qui est en GPL Pour chaque mot du français, t'as pleins d'infos (stats d'utilisations dans les livres ou films, fonction grammaticale, phonétique, découpage en syllabes, son lemme...).
Marsh Posté le 20-10-2010 à 11:18:33
Tout d'abord merci pour tout ... Je pensais avoir répondu en vous remerciant mais j'ai du oublier ...
Bref ...
Tout aussi curieux que cela puisse paraitre, le fati d'avoir mis LIKE '$variable%' ... a fonctionner pendant un temps ... puis la plus rien
Voilà ma requête :
Code :
|
cela ne renvoi plus de résultat ...
J'ai changé titre LIKE '%eau%' ... en laissant les autres tel quel ... et la ca marche ...
Donc en clair j'ai toujours ce problème de requete sur un mots précis comme "eau" mais ma requête MySQL/PHP me renvoi ou TOUS les résultats "panneau", "eau", "rouleau", "eaux"... alors que je ne souhaite avoir que "eau" et "eaux" ... Bref c'est l'horreur ...
J'ai tout essayé
Le plus bizzare ... c'est que même sous phpMyAdmin ...
Faire une requete comme : SELECT * FROM image WHERE mots LIKE '%usa%' renvoi 6 résultats ... alors que WHERE mots LIKE 'usa%' renvoi 0 résultat !!!
Pourtant dans le champ "mots" ... j'ai bien le mot usa seul et la chaine usa ... (usa prohibition / Remusa)
Voilà comment je faisais avant :
Code :
|
Merci pour votre aide
Marsh Posté le 20-10-2010 à 14:53:14
J'ai trouvé grâce à ce site
http://www.tech-recipes.com/rx/484 [...] tatements/
Désolé et merci encore
Marsh Posté le 15-09-2010 à 14:49:24
Bonjour,
Voilà je suis confronté au problème suivant ... j'effectue une recherche dans une base de donnée SQL ...
Ma recherche est du style :
$query = "SELECT * FROM image WHERE mots LIKE '%$mots_search%'";
Valeur des données de ma base pour exemple :
Panneau
Eau
Bouleau
Eaux
...
Ce que je souhaiterais serait de saisir une valeur dans un champ (ex: eau) et que le résultat ne retourne que les deux Eau et Eaux ... mais pas Panneau ni Bouleau ...
En clair quand je mets %% ca me retourne toutes les occurrences contenant "eau", et quand je mets = au lieu de LIKE sans les %% ca ne me retourne que Eau ... mais pas le Eaux ...
Je penses que cela est faisable mais heu ... comment
Merci pour votre aide !
Cordialement
Message édité par Odissine le 20-10-2010 à 11:58:34