Comment conserver les mots utilisés par le moteur de recherche ?
samedi 26 avril 2003, par Maurice Frankel. Dernier ajout dimanche 11 février 2007
Les recherches effectuées par les visiteurs d’un site donnent des indications sur ce qu’ils pensent y trouver. Il est donc intéressant de pourvoir conserver les mots qu’ils ont utilisés pour ces recherches.
Le formulaire de recherche génère un appel au module « recherche.php3 » en lui passant les mots saisis dans la variable recherche.
Il suffit alors de construire un squelette « recherche.html » inspiré du squelette standard « recherche-dist.html » qui accumule le contenu de la variable recherche dans un fichier qui peut s’appeler « recherche.log ».
Il faut ensuite archiver périodiquement ce fichier.
Le code php à ajouter au début du squelette peut être le suivant :
On peut également y ajouter des informations sur le contexte de la fenêtre à partir de laquelle le moteur de recherche a été appelé :
C’est ce que fais pour ma page recherche.
Je donne en bas de la page la possibilité de lancer une recherche sur les mots recherchés plus d’une fois. La sélection est triée sur le nombre d’utilisations de ces mots.
Le code utilisé est le suivant :
Vous pouvez facilement l’adapter à l’affichage que vous souhaitez.
Je viens d’ajouter sur le site www.actionconsommation.org le code suivant en bas de la page "résultat de la recherche" qui permet d’effectuer une recherche à partir des mots qui ont été utilisés plus d’une fois.
<div style="width:260;">
<p style="padding:0;margin:0;">Mots qui ont été recherchés plus d'une fois :</p>
<form action='recherche.php3' method='get' style="display:inline;">
<br><label for='formulaire_recherche' style='display: none'>Rechercher dans le site : </label>
<?
$mots = array();
$fd = fopen($file,"r");
while ($buf = fgets($fd,4096)) {
$buf2 = strstr($buf,"(");
$buf3 = substr($buf2,1,strpos($buf2,")")-1);
if ($mots[$buf3]) {$mots[$buf3]++;}
else {$mots[$buf3] = 1;}
}
fclose($fd);
$opt_select = "";
arsort($mots);
while (list($ks,$vs) = each($mots)) {
if ($vs > 1) {
$opt_select .= "<option>$ks"; }
}
echo "<select id='formulaire_recherche' size=\"1\" name=\"recherche\" class='formrecherche'>$opt_select</select>"
?>
<input type='submit' name='selection' value='Rechercher' style="width:90px;margin:5px;">
</form>
</div>
Au lieu d’utiliser un fichier texte on pourrait créer une table avec un délai de conservation des mots.
bonjour,
je tenais à remercier pour le code permettant de mettre en ligne les mots recherchés plus d’une fois.
J’ai copié le code et tout marche. Si ce n’est que le premier mot apparaissant dans le menu déroulant est "0" ! alors qu’il n’y en a pas dans le fichier recherche.log...
cela doit être tres simple mais je ne vois pas d’où cela provient....
Salut a tous,
j’ai testé en local ton squelette sur mon moteur de recherche et il marche impec ! bravo :) et merci a tous les autres aussi pour ce script
Oui, il peut y avoir des recherches lancées avec une mauvaise saisie.
On peut essayer, avant de stocker l’information de filtrer une zone blanche, un 0...
Mais il restera toujours des erreurs de saisie, un mot mal ortographié...
La seule solution est de faire de temps un temps un nettoyage manuellement dans le fichier pour y enlever les lignes indésirables.
Il suffit de le rapatrier en FTP, le corriger, puis le renvoyer sur le site à la place de la version contenant les lignes indésirables.