Problème d'accents pour un moteur de recherche

chocholman Messages postés 21 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 1 septembre 2005 - 31 août 2005 à 18:08
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 1 sept. 2005 à 17:49
Bonjour,



Je réalise un moteur de recherche par php sur une base Oracle7 (oui je sais c'est très vieux mais j'ai pas le choix)

lorsque je tape par exemple le mot "evenement" il me retourne "evenement" mais pas "événement" "évènement" ...

Voila à quoi ressemble ma requête :



$req="SELECT reference_origine, commentaire,
code_commentaire, projet FROM doc_commentaire WHERE commentaire
LIKE '%$tab[0]%' ";

(la chaine de caractère est dans $tab[0])



j'ai essayé avec upper en espérant qu'en mettant tout en maj les accent disparaitraient mais que néni

$req="SELECT reference_origine,
commentaire, code_commentaire, projet FROM doc_commentaire WHERE
upper(commentaire) LIKE upper('%$tab[0]%') ";



J'ai essayé aussi de mettre tous les eéèêëÈÉÊË en e et ensuite detecté
dans le mot la lettre e pour la remplacer par "[eeéèêëÈÉÊË]"

ce qui donnerait pour evenement:
"[eeéèêëÈÉÊË]v[eeéèêëÈÉÊË]n[eeéèêëÈÉÊË]m[eeéèêëÈÉÊË]nt" . Mais ça
marche pas le code n'est pat compris pour la requête



j'ai ensuite fait de même mais à la place de remplacer tous les e par
"[eeéèêëÈÉÊË]" je les ai remplacer par "_". Ce qui donnait _v_n_m_nt et
à l'exécution ca m'affichait tous les resultats des chaines de
caractères avec la présence des lettres "v" "n", "m" et "nt" .



Aidez moi................;!!!!!!!!!!!!!!!!!!!!

Chocholman

7 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
31 août 2005 à 19:37
Salut,



Ca marche tout seul avec MySQL !

Je ne t'aide pas beaucoup là, hein?
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
31 août 2005 à 21:12
lool

je ne vais pas t'aider bcp non plus en te disant qu'il y a tt le temps
des gens qui posent la même question que toi, donc forcément la réponse
doit être qq part mdr



plus sérieusement j'ai déjà vu des fonctions php qui résolvait ça mais
je n'ai pas gardé les liens, tape "accents base de données" dans google
et tu devrais retrouver.
0
chocholman Messages postés 21 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 1 septembre 2005
31 août 2005 à 21:53
Bah merci les gars

Mais ça fait 2 jours que je cherche sur le net et toujours rien... J'ai
cherché pour avoir des codes sql (le pourait se résoudre par le sql)
mais rien non plus. Et comme je ne trouve pas de site enumérant les
fonction sql pour oracle7, j'ai du mal. Je suis sûr qu'il y a une
solution, du coté de WHERE mais je coince vraiment.




Chocholman
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 sept. 2005 à 09:48
Hello,



je connais mal plsql, mais il doit y avoir la gestion des expressions régulières. Cela pourrait t'aider.

Sinon je ne vois que la solution très lourde de sortir toutes les
possibilités pour ton mot, et de faire ton where like avec des or sur
chaque version de ce mot.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_sjon Messages postés 861 Date d'inscription mardi 26 mars 2002 Statut Membre Dernière intervention 29 novembre 2006 1
1 sept. 2005 à 11:40
Sael og blesud



De mémoire il y a une option dans le conf d'oracle qui permet de gérer
cela; dans la section charset; maintenant je me souviens de cela dans
la version 8 et non pas la 7 ... ;-) Je vais voir si je retrouve mais
il me faut réinstaller oracle ... ;-) ... Mais vous pouvez regarder par
là ...

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón
0
chocholman Messages postés 21 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 1 septembre 2005
1 sept. 2005 à 11:47
Merci pour aide Sjon mais en fait je ne peux pas modifier quoique se
soit sur la base. Je peux juste la consulter donc à partir de là je
dois retrouver une fonction sql ou un code php qui ne mettrait à mettre
trop de temps pour chercher les bons mots (ma base contient 54000
enregistrements et les mots sont recherché dans un commentaire qui peut
comprendre jusqu'à 2000 lettres)

Chocholman
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
1 sept. 2005 à 17:49
J'ai peut être une idée à te soumettre.



Il faudrait simplement que tu formates la saisie avant de lancer la requête.

Il suffirait de remplacer toutes les lettres qui peuvent avoir des accents

comme le E par "_"

Ainsi ça ferait un truc du genre

select * from table where mot LIKE "_V_N_M_NT"

Donc il te sortirait forcément évènement, Evènement, evenement...
Voilà, à toi de jouer!

TBBUIM
0
Rejoignez-nous