Amélioration d'un moteur de recherche

Amélioration d'un moteur de recherche - PHP - Programmation

Marsh Posté le 14-06-2009 à 12:13:03    

Bonjour Tout le monde,
 
Voila j'aimerai améliorer mon moteur de recherche sur mon site.
 
Exemple:
 
Entrée1:
Titre: Voiture bleu
Description: Une grande voiture bleu
 
Entrée2:
Titre: Voiture rouge
Description: Une grande voiture rouge
 
Si je recherche "voiture", mon moteur me trouve les deux entrée c'est très bien. Si je recherche "voiture bleu", mon moteur me trouve les deux entrée également or je voudrais dans ce cas qu'il n'affiche que l'expression exacte. C'est à dire uniquement entrée1.
Voila j'ai essayé quelques modifications sur le code mais ça ne fonctionne pas. Pourriez-vous m'aider s'il vous plaît?
Voici le code:

Code :
  1. if(trim(preg_replace("/[\s,]+/", '', $text_search)) != '') {
  2. $keywords = preg_split("/[\s,]+/", $text_search);
  3. $keywords = array_unique($keywords);
  4. $search .= ' AND (';
  5. $prefix = '';
  6. for($i = 0; $i < count($keywords); $i++) {
  7.  $search .= $prefix."a.ad_headline LIKE '%".$keywords[$i]."%' ";
  8.  $prefix = 'OR ';
  9. }
  10. for($i = 0; $i < count($keywords); $i++) {
  11.  $search .= $prefix."a.ad_text LIKE '%".$keywords[$i]."%' ";
  12.  $prefix = 'OR ';
  13. }
  14. $search .= ') AND a.published = 1';
  15. } else {
  16. $search .= ' AND a.published = 1';
  17. }


 
Merci d'avance


Message édité par hazmoon le 14-06-2009 à 12:13:40
Reply

Marsh Posté le 14-06-2009 à 12:13:03   

Reply

Marsh Posté le 15-06-2009 à 10:01:29    

faut remplacer les 'OR' du prefix par des AND. Ou mieux, tu ne découpes pas les mots-clés avec les espaces et tu utilises la chaîne en 1 coup (mais là, ça implique que l'ordre des mots est important) et tu fais

Code :
  1. $search .= "OR a.ad_headline LIKE '%$text_search%' ";
  2. $search .= "OR a.ad_text LIKE '%$text_search%' ";


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-06-2009 à 10:03:36    

mieux : tu utilise MATCH http://dev.mysql.com/doc/refman/5. [...] earch.html

 

encore mieux :  tu utilises SPHINX ( ici ) en surcouche  ou un autre "vrai" moteur de recherche ( solr par exemple)


Message édité par flo850 le 15-06-2009 à 10:03:51

---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed