Comment conserver les mots utilisés par le moteur de recherche ?

All contributions published for previous SPIP versions

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 :

<?php
$d = date("d/m/Y H:i:s");
$ligne = "$d;$recherche;\r\n";
$file="recherche.log";
$flog = fopen($file,"a");
fputs($flog,$ligne);
fclose($flog);
?>

On peut également y ajouter des informations sur le contexte de la fenêtre à partir de laquelle le moteur de recherche a été appelé :

<php?
$file="recherche.log";

$referer=getenv("HTTP_REFERER");
$val1 = substr($referer,7);
$val2 = split( "/",$val1,2);
$page = "/$val2[1]";

$ip=getenv( "REMOTE_ADDR");
$host=gethostbyaddr($ip);

$expl=getenv("HTTP_USER_AGENT");

$for=getenv("HTTP_X_FORWARDED_FOR");

$d = date("d/m/Y H:i:s");
$ligne = "$d ; ($recherche); $host($ip) ; $for ; $expl ; $page\r\n";

if ($ip & $page){
     $flog = fopen($file,"a");
     $rc  = fputs($flog,$ligne);
     $rc  = fclose($flog);
}
?>

updated on 11 February 2007

Discussion

4 discussions

  • 1
    Quentin

    Bonjour ;)
    en fait j’aurais aimé adapter ce script pour qu’il ne sauvegarde toutes les recherches...

    Puis que sur mon site il affiche le top 10 des mots les plus recherchés...

    Pouvez-vous m’aider à réaliser cela ???

    MERCI !!!!

    • Maurice Frankel

      Bonjour,

      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 :

      <form action='recherche.php3' method='get' style="display:inline;">
      <br>
      <?
        $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>

      Vous pouvez facilement l’adapter à l’affichage que vous souhaitez.

    Reply to this message

  • 4
    Maurice Frankel

    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&nbsp;: </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.

    • orpheus

      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....

      encore merci

    • heliopo

      moi oci j’ai le meme probleme ?
      comment puis-je le résoudre stp !
      en tou K , merci , jolie taff :o)

    • Je ne comprends pas. Je n’ai pas ce problème.

      Vous pouvez voir le squelette utilisé à l’adresse :

      http://www.actionconsommation.org/publication/recherche_squel.txt

      Envoyez-moi le squelette que vous utilisez.

    • protocole

      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

    Reply to this message

  • 2

    chouette vraiment chouette,

    mais le 0 est la

    voir ICI

    COMMENT JE LE SUPPRIME ?

    • Maurice Frankel

      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.

    • DESOLE

      mais je n’ai pas fait de saisie !

      je vais tenté le nettoyage de ça :

      08/12/2003 21:24:05;;
      08/12/2003 21:24:05 ; (); lns-vlq-13-62-147-204-176.adsl.proxad.net(62.147.204.176) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FREE) ; /recherche.php3?recalcul=oui&submit=Recalculer+cette+page
      08/12/2003 21:24:15;AGENDA;
      08/12/2003 21:24:15 ; (AGENDA); lns-vlq-13-62-147-204-176.adsl.proxad.net(62.147.204.176) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FREE) ; /recherche.php3?recalcul=oui&submit=Recalculer+cette+page
      08/12/2003 21:24:27;AGENDA;
      08/12/2003 21:24:27 ; (AGENDA); lns-vlq-13-62-147-204-176.adsl.proxad.net(62.147.204.176) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FREE) ; /recherche.php3
      08/12/2003 21:49:31;;
      08/12/2003 21:49:31 ; (); 80.236.52.198(80.236.52.198) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461) ; /spip_contrib/article.php3?id_article=130
      08/12/2003 21:59:39;;
      08/12/2003 21:59:39 ; (); 80.236.52.198(80.236.52.198) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461) ; /
      09/12/2003 00:37:32;Rechercher;
      09/12/2003 00:37:32 ; (Rechercher); ABoulogne-112-1-6-5.w81-49.abo.wanadoo.fr(81.49.110.5) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) ; /rubrique.php3?id_rubrique=91
      09/12/2003 00:36:52;jacque prévert;
      09/12/2003 00:36:52 ; (jacque prévert); ABoulogne-112-1-6-5.w81-49.abo.wanadoo.fr(81.49.110.5) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) ; /recherche.php3
      09/12/2003 01:08:17;;
      09/12/2003 01:08:19 ; (); pub1.cdcna.com(63.66.5.11) ; 10.94.80.50 ; Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20030925 Firebird/0.7 ; /spip_contrib/article.php3?id_article=130
      09/12/2003 01:09:18;AGENDA;
      09/12/2003 01:09:18 ; (AGENDA); pub1.cdcna.com(63.66.5.11) ; 10.94.80.50 ; Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20030925 Firebird/0.7 ; /recherche.php3
      09/12/2003 11:02:27;contact association;
      09/12/2003 11:02:27 ; (contact association); 213.56.33.205(213.56.33.205) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; KITV4 Wanadoo; .NET CLR 1.1.4322) ; /rubrique.php3?id_rubrique=38
      09/12/2003 11:29:52;personnalité;
      09/12/2003 11:29:52 ; (personnalité); 213.56.33.205(213.56.33.205) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; KITV4 Wanadoo; .NET CLR 1.1.4322) ; /sommaire.php3
      09/12/2003 13:32:17;;
      09/12/2003 13:32:17 ; (); ANantes-106-1-10-196.w80-14.abo.wanadoo.fr(80.14.123.196) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Alexa Toolbar) ; /spip_contrib/article.php3?id_article=130
      09/12/2003 13:40:49;;
      09/12/2003 13:40:49 ; (); ANantes-106-1-10-196.w80-14.abo.wanadoo.fr(80.14.123.196) ; ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Alexa Toolbar) ; /spip_contrib/article.php3?id_article=130
      09/12/2003 14:36:12;barbara;
      09/12/2003 14:36:13 ; (barbara); e1.bob.bdeb.qc.ca(205.151.6.33) ; 10.154.69.110 ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) ; /rubrique.php3?id_rubrique=96
      09/12/2003 20:23:47;poesies;
      09/12/2003 20:23:47 ; (poesies); cache-loh-ab08.proxy.aol.com(195.93.33.14) ; ; Mozilla/4.0 (compatible; MSIE 6.0; AOL 7.0; Windows NT 5.1; .NET CLR 1.0.3705) ; /rubrique.php3?id_rubrique=96
      09/12/2003 21:14:10;esbb85;
      09/12/2003 21:14:10 ; (esbb85); ANantes-101-1-2-137.w81-53.abo.wanadoo.fr(81.53.245.137) ; ; Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; T312461; MyIE2) ; /rubrique.php3?id_rubrique=17
      09/12/2003 21:14:27;bio-squelettes pour free;
      09/12/2003 21:14:27 ; (bio-squelettes pour free); ANantes-101-1-2-137.w81-53.abo.wanadoo.fr(81.53.245.137) ; ; Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90; T312461; MyIE2) ; /rubrique.php3?id_rubrique=17

      pas glop ?????????????????

    Reply to this message

  • Nicolas Hoizey

    Il pourrait être intéressant de proposer sur le site, ou au moins dans le back-office, un top ten des recherches, ou une liste complète ...

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom