Don_Angelo 27 Posté(e) le 24 décembre 2005 Partager Posté(e) le 24 décembre 2005 Bonjour à tous, je suis en train de développer un moteur de recherche en PHP pour mon site. Celui-ci est censé trier les résultats par pertinence décroissante en affichant la pertinence estimé. Mon problème c'est que je suis obligé de calculer deux pertinences différentes. Celle pour la recherche d'une expression exacte et celle de la recherche d'une suite de mot au hasards dans l'article. La 2nde ayant une valeur beaucoup plus faible. Je suis donc obligé de trier pour que le même resultat n'apparaissent pas deux fois. La recherche s'effectue sur deux tables pour l'instant. Il y en aura bientôt plus donc le script est prévu en conséquence. Le problème est que lors de la recherche dans la 1ère table tout est ok. Mais dans la seconde les résultats apparaissent en double avec des pertinences différentes et je comprends pas pourquoi. Voici mon code: <? include('rechercher.php'); echo ""; $motcle_tag_less = str_replace("+"," ",$_GET['motcle']); $mot_cle_tag_less=str_replace("[43]"," ",$mot_cle_tag_less); $mot_cle_tag_less=str_replace("[38]","&",$mot_cle_tag_less); $mot_cle_tag_less=str_replace("[63]","?",$mot_cle_tag_less); $mot_cle_tag_less=str_replace("[br]"," ",$mot_cle_tag_less); $motcle_tag_less = trim($motcle_tag_less); $motcle_tag = $motcle_tag_less; $motcle_tag = str_replace(""","",$motcle_tag); $motcle_tag = str_replace("<","1) echo "Résultats de la recherche de [b]",$motcles,"[/b]: $nb_result résultats "; echo " "; echo "[list=1] "; while ($temp Si quelqu'un pouvait m'aider ça m'arrangerait. D'avance Merci. Lien à poster
Don_Angelo 27 Posté(e) le 31 décembre 2005 Auteur Partager Posté(e) le 31 décembre 2005 Salut, Par hasard hier soir j'ai trouvé la réponse. Je me sens tout honteux de ne pas y avoir pensé: Il suffisait de reprogrammer une fonction qui teste l'existence du texte du resultat comme ça: function result_exist($texte) { global $resultats; $temp=0; $temp2=count($resultats); while($temp<=$temp2) { if ($resultats[$temp]["texte"]==$texte) { return true; break; } else $temp++; } if ($temp==$temp2) return false; } et de remplacer la condition bancale par: if (result_exist($texte)==false) Lien à poster
Messages recommandés