Aller au contenu

Tri récalcitrant en PHP


Don_Angelo

Messages recommandés

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

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
×
×
  • Créer...