Connaître les utilisateurs d’un site web et leurs attentes — sans pour autant se tranformer en espion pervers qui constelle son site de mouchards ni assomer ses visiteurs à coups de questionnaires « que pensez-vous de notre site ? ») — est le désir de tout webmaster. Un bon moyen de cerner les attentes de ses visiteurs est sans doute de connaître les requêtes qu’ils font dans le moteur de recherche interne d’un site.
Les quelques lignes de code que nous proposons ici rempliront deux fonctions : générer une liste des requêtes les plus usitées sur le site et fournir le nombre total de requêtes effectuées dans le moteur de recherche.
1. Créer une nouvelle table
Nous allons commencer par créer une nouvelle table qui contiendra les « logs » du moteur de recherche.
CREATE TABLE spip_recherche (
requete varchar(255) NOT NULL,
compteur INTEGER NOT NULL
);
2. Le script qui va faire le travail
Nous allons ensuite créer un petit fichier, que nous appelerons par exemple stats_recherche.php3
qui effectuera le travail de comptage.
<?php
# On se connecte à la base de données (en chargeant au passage les fonctions nécessaires à la suite)
require("ecrire/inc_version.php3");
require("ecrire/inc_connect.php3");
# On nettoye la requête (on enlève les accents, on vire les espaces superflus et on passe tout en minuscules)
$requete = strtolower(trim(strtr($recherche,
"ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜàâãäåçèéêëìíîïòóôõöùúûüÿ",
"AAAAAACEEEEIIIIOOOOOUUUUaaaaaceeeeiiiiooooouuuuy")));
# On checke si l'entrée est déjà présente dans la table
$resultat_total = spip_query_db("SELECT count(*) as qte FROM spip_recherche WHERE requete='$requete'");
$total = @mysql_result($resultat_total,"0","qte");
# Si oui, on incrémente le compteur
if($total>0)
{
spip_query_db("UPDATE spip_recherche SET compteur = compteur + 1 WHERE requete='$requete'");
}
# Si non, on ajoute l'entrée dans la table
else
{
spip_query_db("INSERT INTO spip_recherche(requete,compteur) VALUES('$requete','1')");
}
?>
Il ne reste plus qu’à l’appeler en intégrant la ligne suivante dans le squelette de recherche :
<?php include("stats_recherche.php3"); ?>
3. Afficher les résultats
Les statistiques sont désormais disponibles dans la base de données. On pourra les appeler en PHP, par exemple pour générer la liste des 50 requêtes les plus demandées dans le moteur de recherche :
<?php
# On se connecte à la base de données (en chargeant au passage les fonctions nécessaires à la suite)
require("ecrire/inc_version.php3");
require("ecrire/inc_connect.php3");
# Requete sur la base de données
$r = spip_query_db("SELECT * FROM spip_recherche ORDER BY compteur DESC LIMIT 50");
while($o = mysql_fetch_object($r)) {
print($o->requete." (".$o->compteur.")<br>"); }
?>
Pour connaître le nombre total de requêtes effectuées dans le moteur de recherche, il suffira de sommer tous les compteurs :
<?php
# On se connecte à la base de données (en chargeant au passage les fonctions nécessaires à la suite)
require("ecrire/inc_version.php3");
require("ecrire/inc_connect.php3");
$compteur = 0;
# Requete sur la base de données
$r = spip_query_db("SELECT SUM(compteur) as total FROM spip_recherche");
$o = mysql_fetch_object($r);
print("Nombre de requêtes :".$o->total);
?>
Pour conclure
Tout ceci est un ersatz vraiment très sommaire de ce à quoi pourrait ressembler un module de stats sur le moteur de recherche. Pas mal d’améliorations devraient être faites (intégrer ça dans l’espace privé de SPIP notamment) : si certains ont envie de s’y coller, je les y encourage vivement.
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
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.
Suivre les commentaires : |