Forum > PHP > Moteur de recherche interne

Moteur de recherche interne

ok Le problème posé sur ce sujet a été résolu.
Auteurs Messages
icone offline Chopin # Posté le 20/01/2009 à 14h32
avatar de Chopin
Rang: membre
Salut tout le monde!

:) tout est dans le titre du topic.

J'ai créé un moteur de recherche interne pour virer celui de Google afin d'en avoir un plus adapté à mon annuaire et avec des recherches immédiates sans avoir à attendre que Google référence mes pages. Seulement, pour qu'il soit parfaitement opérationnel je voudrais que lorsque je recherche un mot avec des majuscules et des accentuations ce sois les mots accentués et en majuscule qui sont recherchés mais également leurs équivalence smiley Pas très claire tout ça lol.

Pour faire plus simple. Actuellement, si le mot "Référencement" est recherche avec MATCH, seul le mot "Référencement" sera recherché. Hors, pour le même mot, je voudrais que la recherche trouve également "référencement, referencement" ou même encore si le cas se présenté "ReFeReNcEmEnT" :) J'avoue qu'il faut être con pour écrire "référencement" de cette façon mais bon...

Pour vous exposer un peu plus mon problème, voici le genre de requête que j'ai fait.

Code:

SELECT ma_colonne FROM ma_table

WHERE

MATCH (ma_colonne) AGAINST ('$RECHERCHE_mots_cles')


Heu... En gros voila :)
Merci à vous par avance!
Cµ0p1N
icone online funnycat # Posté le 20/01/2009 à 15h43
avatar de funnycat
Rang: administrateur
Bonjour Chopin,
Normalement le problème se règle assez aisément, il faut utiliser le paramètre LIKE lorsque tu fait une recherche dans ta base de donnée.
Dans ton cas, ça donnera quelque chose comme ça:
Code:
SELECT * FROM ma_table WHERE colonne LIKE '$RECHERCHE_mots_cles'


Ce paramètre ne se préoccupe pas des accents et des majuscules. Donc ton problème pour ton moteur de recherche en PHP va être réglé.

N'hésite pas à dire si ça fonctionne correctement ou si au contraire le problème persiste.
Cordialement.
Ma page préférée? Le dossier référencement qui présente une multitude d'informations utiles. smiley
Sinon hors internet je suis développeur web PHP.
icone offline Chopin # Posté le 20/01/2009 à 16h10
avatar de Chopin
Rang: membre
Re,

Au départ je faisais mon moteur avec Like justement mais j'ai lu quelque part qu'il était préférable d'utiliser MATCH et AGAINST en FullText pour des raisons de rapidité.

Sinon, j’ai vue aussi qu’on pouvait rendre insensible aux accents et aux majuscules une recherche avec MATCH et AGAINST en faisant une simple collation mais j’ai essayé toutes les possibilités de collation et c’est toujours aussi sensible aux accents et aux majuscules sauf si erreur de ma pars. :(

Enfin, si je ne trouve aucune solution avec MATCH et AGAINST tanpis, j'utiliserais Like.
Cµ0p1N
icone online funnycat # Posté le 20/01/2009 à 17h59
avatar de funnycat
Rang: administrateur
D'accord, merci pour le complément d'information. Là c'est toi qui m'apprend quelque chose. Je ne connaissais pas vraiment MATCH et AGAINST.

Bon courage dans tes recherches.
Ma page préférée? Le dossier référencement qui présente une multitude d'informations utiles. smiley
Sinon hors internet je suis développeur web PHP.
icone offline Chopin # Posté le 21/01/2009 à 00h35
avatar de Chopin
Rang: membre
Voila, ça fonctionne avec MATCH et AGAINST. N'ayant pas réussi à faire fonctionner les collations sur ce type de requête j'ai tout bêtement changé l'interclassement de ma base de données de utf8_bin à utf8_unicode_ci qui a la particularité d'être insensible à la case et aux accents.

Il ne me reste plus qu'à peaufiner mon petit moteur puis à le mettre en ligne. :)

@ plus!
Cµ0p1N
icone online funnycat # Posté le 21/01/2009 à 00h51
avatar de funnycat
Rang: administrateur
Félicitation et merci pour l'astuce. smiley
Ma page préférée? Le dossier référencement qui présente une multitude d'informations utiles. smiley
Sinon hors internet je suis développeur web PHP.