moteur de recherche et majuscules/minuscules

Eléphanteau du PHP | 11 Messages

26 janv. 2006, 01:01

Bonjour

J'ai installé un petit moteur de recherche sur mon site, multitables.

Un requete de type :

Code : Tout sélectionner

SELECT * FROM matable WHERE champs like '%mot_recherche%'
Mais comment rendre cette recherche indépendante des majuscules/minuscules ? En effet pour l'instant taper le mot recherché dans le formulaire en majuscule ou minuscule donne deux résultats differents.

Grand merci
Tout ce qui n'est pas donné est perdu.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

26 janv. 2006, 01:06

Je viens d'essayer "moteur de recherche php" sur Google, et je suis horrifié des résultats car tous les topsites propose la même approche (celle que tu as suivie) et qui se trouve être la pire :(

Alors oublie tout ce que tu as pu lire à ce sujet et jette-toi sur la Recherche en texte intégral (Full-text) dans MySQL, qui s'occupera de ce genre de détails. ;)

Eléphanteau du PHP | 11 Messages

26 janv. 2006, 20:19

Grand merci pour ton lien. J'en ai fait une première lecture en diagonale : très intéressant !!!
Tout ce qui n'est pas donné est perdu.

Eléphant du PHP | 383 Messages

27 janv. 2006, 02:03

la méthode que j'utilise ( dont personne ne m'a encore demontré que c'etait une connerie ) est d'indexer chaque article dans lequel je veux faires des recehrches. ainsi, pour chaque mot qui apparait dans un article, je stocke : ce mot en minuscule et sans accents, l'id de l'article et le nombre de fois qu'il apparait dans l'article. les avntages :
- plus de probleme de casse, d'accents ou de code html ( si tu as télé dans ta base et qu'on cherche tele, il se passe quoi.. )
- j'elimine de l'index les mots inutiles ( plus rapide, environ 40% de volume de texte a chercher en moins )
- comme un mot qui apparait plusieurs fois dans un article n'apparait qu'une fois dans mon index -> encore plus rapide
- comme je fais du coup une recherche en texte exact et pas en "contient", et que l'index est trie -> encore plus rapide :-)
- j'ai une notion de score ( simple, mais qui pourrait etre ameliorée ) qui me permet de trier les resultats.