Forum > PHP > Moteur de recherche interne

Moteur de recherche interne

ok Le problème posé sur ce sujet a été résolu.
avatar de Chopin
Membre
# Le 20/01/2009 à 14h32
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.

  1. SELECT ma_colonne FROM ma_table
  2.  
  3. WHERE
  4.  
  5. MATCH (ma_colonne) AGAINST ('$RECHERCHE_mots_cles')


Heu... En gros voila :)
Merci à vous par avance!
avatar de Tony_
Administrateur
# Le 20/01/2009 à 15h43
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:
  1. SELECT *
  2. FROM ma_table
  3. 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.
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de Chopin
Membre
# Le 20/01/2009 à 16h10
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.
avatar de Tony_
Administrateur
# Le 20/01/2009 à 17h59
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.
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de Chopin
Membre
# Le 21/01/2009 à 00h35
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!
avatar de Tony_
Administrateur
# Le 21/01/2009 à 00h51
Félicitation et merci pour l'astuce. smiley
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.