Moteur de recherche interne

blaize21 Messages postés 6 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 7 mars 2007 - 6 févr. 2007 à 13:18
blaize21 Messages postés 6 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 7 mars 2007 - 6 févr. 2007 à 14:35
Bonjour,

je suis en train de développer un petit site de type agenda/annonce d'événements pour mon projet de fin d'année et je bute sur la mise en place d'un moteur de recherche interne.

Le problème c'est que les informations contenues dans ma BDD sont enregistrées après traitement via htmlentities: château devenant donc Château etc...

Je traite donc de la même façon les mots recherchés et pas de souci de ce côté là.

La difficulté c'est que j'aimerai que si l'on cherche chateau (sans le ^ ), le moteur inclue les mots comprenant l'accent circonflexe, ce qui n'est pas le cas pour l'instant.

J'ai fait des recherches en vain sur le sujet pour l'instant, si vous avez une idée ou un lien, je vous remercie d'avance pour ce coup de main!

Cordialement!

4 réponses

cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
6 févr. 2007 à 13:34
bonjour,
as tu essayé la fonction LIKE(%tonmot%) en sql?
blaize21 Messages postés 6 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 7 mars 2007
6 févr. 2007 à 13:48
Bien sûr, je procède de cette façon!

Le problème c'est que je n'ai pas de résultat quand je cherche "chateau" alors que "château" (qui est l'orthographe présente dans la BDD) me donne les bons résultats.
Je voudrais juste que le moteur de recherche ne tiennent pas compte des accents et que les deux orthographes (avec ou sans accent) me renvoient les même résultats
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
6 févr. 2007 à 14:23
re,


je crois que je tiens une piste.


va voir ici : 22 http://mysql.ifrance.com/showthread.php?t=22


Voici le post qui nous en dit plus ;
Bonjour,

sur la version 4.1, tu as la notion d'interclassement qui existe. En utilisant les interclassements " utf8_general_ci " ou "latin1_swedish_ci" pour les champs sur lesquel tu fais tes recherches, le problème est réglé :





Code:




CREATE TABLE `thesaurus` (
`code` bigint(20) unsigned NOT NULL auto_increment COMMENT 'Code de la phrase',
`libelle` text character set utf8 NOT NULL COMMENT 'Libellé de la phrase',
`application` varchar(20) NOT NULL default '' COMMENT 'Application d''origine',
PRIMARY KEY (`code`),
KEY `application` (`application`),
FULLTEXT KEY `libelle` (`libelle`)
) ENGINE =MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 COMMENT='Thésaurus Français';









Une recherche avec comme contrainte "`libelle` = 'feNetre'" par exemple, te renverra aussi bien le mot "Fenêtre" que "fenêtre" que "feneTRe". La casse ainsi que l'accentuation sont alors insensibles.
tient nous au courant
cordialement.
blaize21 Messages postés 6 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 7 mars 2007
6 févr. 2007 à 14:35
Merci  beaucoup pour ton aide!

Mais ca ne doit pas être la bonne solution, l'interclassement est correct...

Mon problème est vraiment lié à la fonction htmlentities qui encode les caractères spéciaux!

Je me retrouve donc avec "le musée de l'objet" en "Musée de l'objet".

Comme je traite ma recherche en l'encodant aussi via htmlentities, si je tape exactement "le musée de l'objet", pas de souci, le résultat est bon!
Par contre si je tape "musee" sans accent, que dalle ( ce qui parait logique car "musee" est différent de "Musée" ).

Faudrait une fonction sql qui "décode" le texte présent dans ma BDD mais j'ai pas trouvé cette fonction jusqu'à maintenant...
Rejoignez-nous