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.
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.
Il ne reste plus qu’à l’appeler en intégrant la ligne suivante dans le squelette de recherche :
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 :
Pour connaître le nombre total de requêtes effectuées dans le moteur de recherche, il suffira de sommer tous les compteurs :
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.
J’apporte ma petite contribution. J’ai remarqué en effet que les stats étaients faussées parce que souvent le visiteur fait une recherche, va sur un des résultats, puis revient sur la page précédente. Cela a pour effet de faire fonctionner plusieurs fois le script et donc d’enregistre plus de recherches qu’il n’en faut.
J’ai donc rajouté une colonne qui enregistre la dernière ip qui a fait une recherche et fait une comparaison supplémentaire. Je vous laisse le code si ça intéresse quelqu’un.