Ajouter l’autocompletion sur votre moteur Google Custom Search Engine
Dans un prĂ©cĂ©dent billet, j’avais expliquĂ© comment intĂ©grer les requĂŞtes sur le moteur de recherche interne d’un site aux rapports de Google Analytics. Dans ce billet j’expliquais Ă©galement qu’une alternative viable est d’intĂ©grer un moteur fournit par Google directement: le Google Custom Search Engine (Google CSE).

Vous vous souvenez certainement qu’il y Ă quelques temps, Google a intĂ©grĂ© l’auto-complĂ©tion et la suggestion de mots-clĂ© Ă son moteur Google Search.
Souvent dĂ©criĂ©e comme envahissante, cette technologie permet cependant d’aider considĂ©rablement les internautes les moins aguĂ©ris.

Ce tutoriel va vous montrer comment intégrer la suggestion de mots-clé provenants des recherches sur votre site, à votre moteur CSE.
Il se base sur des choses simples et comprĂ©hensibles par le plus grand nombre et utilise PHP et JQuery. La technique fonctionnera d’autant mieux si votre site Ă un trafic consĂ©quent car il se nourrit des recherches faĂ®tes sur votre site.
Si vous n’avez pas ce trafic, vous pourrez toujours vous servir du flux de recherche d’un autre site qui le publie.
Avant tout assurez vous d’avoir installĂ© CSE sur votre site et que celui-ci fonctionne.
Ajout de la fonctionnalitĂ© d’auto-complĂ©tion de JQuery.
TĂ©lĂ©chargez le plugin d’auto-complĂ©tion dĂ©veloppĂ© par Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, et Jörn Zaefferer ici et dĂ©zippez le.
Copiez le répertoire jquery-autocomplete là où se trouve la page HTML ou PHP de votre moteur CSE.
Dans cette page, testez l’intĂ©gration du plugin en copiant le code suivant dans entre les balises <head> (ou faites le dans le header si vous utilisez PHP pour composer vos pages comme avec Wordpress ou Dotclear).
<script type="text/javascript" src="jquery-autocomplete/lib/jquery.js"></script>
<script type="text/javascript" src="jquery-autocomplete/jquery.autocomplete.js"></script>
<script type="text/javascript" src="jquery-autocomplete/demo/localdata.js"></script>
<link rel="stylesheet" type="text/css" href="jquery-autocomplete/jquery.autocomplete.css" />
<script type="text/javascript">
$().ready(function() {
$("#cse_search").autocomplete(cities);
});
</script>
Comme vous pouvez le constater, cette fonction fait appel Ă un fichier de test (localdata.js) livrĂ© avec le plugin. Il s’agit d’une liste de villes. Peu importe, cela va juste nous aider Ă tester.
Modifiez aussi le code d’intĂ©gration de CSE comme ceci; ajouter l’id cse_search:
<input type="text" id="cse_search" name="q" size="31" />
Ceci va permettre au script JQuery de savoir dans quel élément écrire son résultat.
Enregistrez, chargez votre page et tenter d’Ă©crire un nom de ville. Normalement, l’auto-complĂ©tion devrait fonctionner.
Connexion du script à la source des mots-clés
Pour rĂ©cupĂ©rer dynamiquement les mots-clĂ©s des requĂŞtes les plus frĂ©quentes, nous allons utiliser un petit bout de code PHP qui va transformer ces donnĂ©es en tableau Javascript comme le fichier llocaldata.js. Le navigateur Web pensera alors qu’il lit un fichier JS.
Pour ce faire, créez un fichier nommé searchdata.php et placez le dans le répertoire que vous avez créé précédemment (jquery-autocomplete).
Dans ce fichier écrivez le code PHP suivant:
< ?php
/* Ce script parse les requètes populaires issues de CSE et les formate en tableau Javascript. */
$data = array();
// Chargement du flux RSS CSE sous la forme XML
// L'url est disponible dans les statistiques de votre compte CSE.
if (!$s = simplexml_load_file("http://www.google.com/coop/api/003198751674731024891/cse/ovffo1orlum/queries?sig=__GaZojo71AtdDbVHqJ9KDPhwXAhk=")) {
exit(); // ici vous devrez mieux gérer les erreurs éventuelles.
}
// on rempli le tableau
foreach($s->item as $item) {
$search_term = strtolower(trim($item->title));
if (!in_array($search_term, $data)) {
$data[] = $search_term;
}
}
sort($data); // on trie le tableau
// on formate en JS
foreach($data as $search_term) {
$js_data[] = "\"" . $search_term . "\"";
}
// on indique au navigateur qu'il s'agit de JS
header("Content-type: text/javascript\n\n");
?>
var searchdata = [< ?php echo implode($js_data, ", "); ?>];
//la fonction implode permet de créer un fichier .csv
Il est possible d’ajouter des termes propres que vous souhaitez mettre en avant. Pour ce faire il suffit d’initialiser le tableau avec des donnĂ©es (en minuscule).
$data = array( "websourcing", "webworker", "webware" ); [/soucrcode] </p>; Assemblage. Ensuite, vous devez faire en sorte que le script JS de la page du moteur de recherche aille piocher dans le tableau JS précédemment crée. [sourcecode language="jscript"] <script type="text/javascript" src="jquery-autocomplete/searchdata.php"></script>
Il vous faut aussi modifier la fonction de recherche quelques lignes plus bas:
$("#cse_search").autocomplete(searchdata);
Envoyez tout ça sur le serveur et cela devrait fonctionner.
Si la recherche est très utilisĂ©e, envisagez de mettre un petit cache dans la page, sans quoi les « hits » vers votre serveur vont exploser.
Voila, encore une astuce permettant de rendre son site plus convivial et professionnel. J’espère que ça pourra vous servir.
Crédits: Netuts








Citer #1 par Pierre Collenot le 13 avril 2009 - 02:00
Bonjour
Je ne sais pas si je frappe Ă la bonne porte, mais je tente quand mĂŞme
Je recherche un script qui permettrait de faire ceci :
Lorsqu’un visiteur arrive sur mon site Ă partir d’un moteur de recherche, je souhaiterais pouvoir afficher quelque chose du genre :
« Bonjour, vous ĂŞtes arrivĂ© dans cette page après avoir saisi le mot ou l’expression « abcdefg hijklm » dans votre moteur de recherche favori. »
« Pour amĂ©liorer le rĂ©sultat de votre recherche, je vous conseille de saisir cette expression « abcdefg hijklm » dans le moteur de recherche interne du site (Google Custom Search), car il est très possible que d’autres pages de ce site rĂ©pondent Ă©galement Ă votre demande. »
L’idĂ©al serait mĂŞme que l’expression « abcdefg hijklm » vienne s’inscrire toute seule dans la fenĂŞtre du Google Custom Search. Ainsi, le visiteur n’aurait plus qu’Ă cliquer sur le bouton d’envoi pour avoir la liste des pages du site oĂą cette expression « abcdefg hijklm » est identifiĂ©e par Google Custom Search
Citer #2 par Lionel Roux le 13 avril 2009 - 17:41
Bonjour Pierre, je pense que j’ai ce qu’il te faut.
Sur un blog Wordpress, il y a un plugin qui fait exactement cela. Tu peux t’inspirer de celui-ci si tu n’utilises pas Wordpress: WP-Greet-box ici
Sinon ce n’est pas comliquĂ©, il faut rĂ©cupĂ©rer le referer dans le header HTTP et pour les mots clĂ©s, il te faut dĂ©cortiquer l’url passĂ© ds ce champ via le paramĂŞtre « q » (search?q=tesmotsclĂ©s).
J’espère avoir rĂ©pondu, sinon n’hĂ©sites pas.
@ bientĂ´t
Citer #3 par Yves le 17 novembre 2009 - 19:26
Bonjour,
Je n’ai pas du tout le mĂŞme rendu de fenĂŞtre avec les mots clĂ©s, y-a-t’il un css qui manque dans le zip?
Merci!
Citer #4 par Lionel Roux le 17 novembre 2009 - 19:45
A priori tous les styles sont dans le fichier CSS jquery.autocomplete.css fournit dans le zip. Les captures ont Ă©tĂ© faites avec un Mac, donc il se peut qu’il y ait des diffĂ©rences.