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

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

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);
}
?>

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.

    Répondre à ce 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

    Répondre à ce 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 ?????????????????

    Répondre à ce 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 ...

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom