Les fonctionnalités avancées de Google Custom Search Engine.
Le samedi 25 novembre 2006 à 04:44 :: Google :: #50
Partie I, les concepts fondamentaux.
(J'aime bien ce titre, ça fait tout de suite sérieux je trouve )
Pour ceux qui viennent de temps en temps sur ce blog ( et vous êtes de plus en plus nombreux, ça fait plaisir, merci ), vous aurez peut-être constaté que j’ ai rajouté un lien, en haut à droite, sous le header, (une sorte de menu un peu cheap).
Le lien pointe vers le Custom Search Engine que j'ai implémenté et très originalement baptisé « Moteur de recherche SEO » (J’imagine que j’aurais pu faire pire, encore que…).
(Vous aurez aussi peut-être constaté que le site est parfois indisponible depuis quelques temps, problèmes de serveur, désolé…)
J’avais crée ce CSE dédié Search Engine Optimisation / référencement lorsque Google avait offert ce service, il y a pile un mois.
C’était du vite fait, pour tester, et je n’avais pas vraiment eut le temps d’approfondir. Pour ceux intéressés par la genèse de l’histoire, voir ce billet.
Mais depuis quelques jours, je me suis de nouveau penché sur la chose et je prends plaisir à jouer avec.
Et je prends également conscience de la puissance de l’outil. J'espère que Google ne s’arrêtera pas en si bon chemin, continuera de le développer et d’y ajouter de nouvelles fonctions.
C’est donc l'occasion de revenir, par l'exemple, sur quelques unes des fonctionnalités avancées pour la personnalisation des CSE, en détaillant les améliorations apportées à celui de Moteurs News.
- J’ai commencé par remettre à jour la liste des sites utilisés pour l’index. (Elle compte désormais un peu plus de 120 sites.)
- J’ai enlevé les moins pertinents, en ai rajouté de nombreux et utilisé les motifs d'URL pour restreindre l’étendue de la sélection.
- J’ai ensuite crée des ‘labels’ permettant d'affiner les résultats de recherche.
- A certains de ces labels, des pondérations ont été associées afin de personnaliser la façon dont les l'URLs apparaissent et se positionnent dans les pages de résultats.
- Et plutôt que d’utiliser l'interface en ligne fournie par Google, j’ai crée un fichier d’annotations (annotation file) et un fichier de contexte (context file ou CSE XML specifications).
Si je n'ai pas eut recours à l'interface en ligne, ce n’est pas par masochisme, mais c'est que certaines fonctionnalités avancées ne sont accessibles que par le biais des fichiers d’annotations et de contexte aux formats TSV ou XML.
Dans un premier temps, je définirai et tenterai d’expliquer les principaux concepts nécessaires pour utiliser ces fonctionnalités avancées, et dans une seconde partie, je détaillerai la mise en œuvre de ces concepts pour la réalisation concrète d’un CSE.
Le fichier de contexte ou spécification XML
Il détermine les attributs globaux et le comportement général du CSE, il est au format XML.
C’est dans ce fichier par exemple que sont définis le nom du CSE, les mots-clefs qui lui sont associés, le caractère collaboratif ou non du moteur ainsi que d’autres éléments sur lesquels nous reviendrons.
Le fichier d’annotations (Annotations label file)
Il peut être aux formats TSV ou XML (Le format OPML est également supporté mais ne permet pas de personnalisations).
C’est lui qui contient la matière du CSE.
On y trouve l’ensemble des URLs qui seront inclues dans le moteur ainsi que les labels qui permettront d’affiner la recherche en fonction de critères. (d’autres éléments optionnels peuvent également être présents, comme des commentaires)
Les motifs d’URL ( URL Patterns )
Le principe du CSE est de se constituer un index personnalisé et donc de choisir dans quels sites les requêtes seront effectuées.
Mais le but étant d’augmenter la pertinence, rechercher dans la totalité d’un site n’est pas forcément l’idéal.
C’est pour cette raison qu’il est possible d’utiliser des motifs d’URL, afin de restreindre la recherche non pas à un site entier mais à des pages répondant à des critères précis.
La précision de la sélection pouvant aller de ‘domaine + sous domaines’ jusqu’à une page en particulier en passant par toutes les possibilités intermédiaires (‘domaine uniquement’, ‘sous domaine uniquement’, ‘URLs contenant des termes précis’… etc.)
Pour ce faire, on peut utiliser la wildcard « * »
Quelques cas concrets :
Pour étendre la recherche à un site dans sa totalité :
www.example.com*
Correspondra à toutes les pages commençant par : www.example.com ou example.com
( www.example.com , sans « * » ne retiendra que la home du site.)
Pour étendre la recherche à un site et à tous ses sous-domaines :
*.example.com/*
Correspondra aux pages de tous les sous domaines + toutes les pages de example.com
Pour limiter la recherche à un sous domaine :
blog.example.com/*
Correspondra aux pages du sous domaine « blog » du domaine « example.com ».
Pour limiter la recherche aux pages contenant un où plusieurs mots particuliers :
www.example.com/*seo
Toutes les pages commençant par www.example.com et contenant le terme seo dans l’URL, ex :
www.example.com/seo.html
ou
www.example.com/seo/intro.html
www.example.com/*seo*moteurs
Toutes les pages commençant par www.example.com et contenant les termes seo ET moteurs dans l’URL, ex :
www.example.com/moteurs/seo.html
ou
www.example.com/seo/moteurs/google.html
Pour les pages dynamiques, une règle d’écriture telle que celle-ci marche également :
www.example.com/index.php?*rubr=seo
Toutes les pages commençant par www.example.com/index.php? et contenant le terme « rubr=seo » dans l’URL seront incluses.
Il est également possible d’exclure des sites ou parties de sites. On peut par exemple inclure la totalité de
www.example.com/*
puis exclure toutes les URLs commençant par example.com et comportant le mot ‘about’ :
www.example.com/about*
Dans le cas concret du CSE de Moteurs News, j’ai par exemple utilisé la règle :
www.sitepoint.com/forums/*
pour ne retenir que les pages des forums et exclure les pages du domaine principal ou bien la règle :
blog.ask.com/*
pour ne retenir que les pages du sous domaine « blog » du domaine « ask.com ».
Ces motifs d’URL permettent d’affiner très précisément les pages que l’on souhaite inclure dans l’index, mais c’est en les couplant avec les ‘labels’ qu’ils prennent vraiment tout leur intérêt.
Les labels.
Les labels (étiquettes) sont en fait des tags associés à des URLs. Les URLs étant regroupées dans le fichier d’annotations, c’est également là que se trouveront les labels.
Lorsqu’un CSE a été configuré pour utiliser les labels, après une première recherche, ces tags apparaissent en haut des résultats. (refinements)
Il suffit alors de cliquer dessus pour affiner la recherche en fonction du label sélectionné.
Pour Moteurs News, j’ai choisi 4 labels différents :
- anglophone
- francophone
- forums_francophones
- forums_anglophones
Si vous cliquez sur un de ces labels, les résultats vont êtres modifiés pour ne retenir que les pages provenant d’URL auxquelles ce label a été associé.
Le premier résultat par défaut pour une recherche sur « sitemaps » provient du blog officiel de Google (voir la mauvaise capture ci-dessus).
Si à l’issue de cette première recherche, vous cliquez sur « forums_francophones », vous obtiendrez cela :
Et le premier résultat, (ainsi que les suivants) proviennent bien de forums en français.
Sous chacun des résultats, vous pouvez d’ailleurs voir quels sont les labels associés à l’URL. Ici il s’agit des labels « forums_francophones » et « francophone ».
Dans le cas présent, les labels « forums_francophones » et « forums_anglophones » sont exclusifs, ce qui signifie qu’un site est soit l’un soit l’autre mais pas les deux en même temps.
Mais plusieurs labels peuvent être associés à une même URL.
C’est le cas pour les labels « anglophone » et « francophone » car certains des sites que j’ai sélectionné ont du contenu dans les deux langues.
De la même manière, un site taggé « forums_francophone » sera également taggé « francophone » car le label sur les forums permet en quelque sorte un second niveaux de raffinement.
Ainsi une recherche de base pour « Yahoo site explorer » pourra être affinée dans un premier temps par le label « francophone » qui fournira alors des résultats en provenance de sites francophones* ET de forums_francophones, puis être encore ‘pseudo-affinée’** pour ne retenir que les résultats en provenance de forums_francophones avec un clic sur le label adéquat.
(* en réalité quelques sites en anglais apparaîtront également du fait que certains sites comportent les 2 tags, anglophones et francophones.)
(** La structure telle qu’existante n’est pas définitive et sera revue prochainement pour permettre un réel affinage des résultats et non un pseudo-affinage comme c’est le cas actuellement.)
Les Background Labels.
Comme je l’ai précisé plus haut, les labels sont associés à des URLs particulières et se trouvent dans le fichier d’annotation.
Les Backgrounds Labels eux, n’agissent pas au niveau de l’URL, mais au niveau supérieur, celui du CSE dans son ensemble.
Ils sont spécifiés dans le « context file » ou « XML specifications » qui détermine le comportement général du moteur.
Comme on l’a vu, les labels peuvent être associés à une requête si l’utilisateur clique sur l’un d’eux pour affiner la recherche.
Les Background Labels sont eux associés par défaut à toutes les recherches effectuées avec le CSE.
Lorsque vous créez un CSE de base via l’interface de Google, 2 Background Labels sont crées par défaut.
C’est quasiment transparent au niveaux utilisateur à moins de lire le fichier contexte.
Cela se passe au moment où dans l’interface :
vous choisissez entre « Search the entire web but emphasize included sites » ( Chercher sur tout le web mais privilégier les sites choisis ) et « Search only included sites » ( Chercher uniquement dans les sites choisis )
Dans le fichier contexte, 2 Backgrounds Labels sont initialisés (voici comment ils sont notés dans le fichier XML) :
<BackgroundLabels>
<Label name="_cse_2qqg7rgdpxc" mode="FILTER"/>
<Label name="_cse_exclude_2qqg7rgdpxc" mode="ELIMINATE"/>
</BackgroundLabels>
Le premier « _cse_2qqg7rgdpxc » est l’identifiant généré aléatoirement pour le CSE afin d'éviter les conflits d'espace de nom, cette valeur est donc celle attribuée au CSE de Moteurs News, elle sera différente pour chaque CSE.
Toutes les URLs que je sélectionne sont par défaut « taggées » avec ce label « _cse_2qqg7rgdpxc ».
Le second « _cse_exclude_2qqg7rgdpxc » est celui qui est associé à toutes les URLs excluses.
On constate que ces 2 labels comporte un attribut « mode ». Il est déterminé par le choix que l’on vient de faire dans l’interface entre « rechercher dans tout le web » ou « rechercher seulement dans les pages sélectionnées »
L’attribut « mode » peut prendre 3 valeurs distinctes :
- FILTER : Signifie que les pages n’étant pas associées au label portant l’attribut FILTER n’apparaîtront pas dans les résultats. Dans cet exemple, le mode FILTER sur le label « _cse_2qqg7rgdpxc » signifie : seules les pages que j’ai choisi (taggées « _cse_2qqg7rgdpxc ») apparaîtront dans les résultats. Les autres (le reste du web) seront filtrées, exclues.
- BOOST : Ce mode aurait remplacé FILTER si j’avais choisi l’option « chercher dans tout le web mais favoriser les pages choisies ». Le label « _cse_2qqg7rgdpxc » passant en mode BOOST aurait signifié que les pages choisies auraient été préférées dans les résultats au détriment des pages non taggées « _cse_2qqg7rgdpxc ».
- ELIMINATE : Signifie que toutes les pages associées au label en mode ELIMINATE ne seront pas présentes dans les résultats. Dans le cas présent, les pages éliminées sont celles que je n’ai pas expressément choisies et qui sont par défaut taggées « _cse_exclude_2qqg7rgdpxc ». Si j'avais choisi de rechercher dans tout le web mais de privilégier les pages sélectionnées, alors les seules pages éliminées auraient été celles expréssement excluses et taggées « _cse_exclude_2qqg7rgdpxc ».
Il faut noter que le mode BOOST peut être ajusté par le biais d’un attribut « weight » (poids). Le poids peut varier sur une échelle allant de –1 à 1.
Une valeur positive signifiant que les pages dont le label est « boosté » seront favorisées et une valeur négative, qu’elles seront « handicapées » dans les résultats.
J’y reviendrais plus en détails lors de la mise en application concrète de tous ces éléments.
Voilà en gros tout ce que l’on a besoin de savoir pour s’attaquer aux fonctions avancées des Google Custom Search Engines.
La seconde partie de ce billet sera consacrée à la mise en œuvre avec un exemple détaillé basé sur le CSE de se site.
Celui ci n’est pas encore finalisé (il est encore en phase alpha pour ainsi dire), comme je l’ai dit plus haut sa structure même n’est pas fixée et est amenée à évoluer.
La mise au point des différents critères d’ajustement pour arriver à une pertinence satisfaisante est un processus long, par essais et erreurs.
Alors si vous avez le temps d’y jeter un œil, n’hésitez pas à me faire part de vos impressions et des améliorations possibles (sites manquants ou pas suffisamment bien classés, incohérences des résultats…)
Vos retours seront appréciés.
(Et pour ceux qui sont arrivés jusque là , ben félicitations hein, parce que je viens de relire, et je trouve ça un peu aride…)
samedi 25 novembre 2006 | 04:44, Sergi
Blogmarks
Delicious
Scoopeo
Fuzz
Technorati
Mister Wong
English
Commentaires
1. Le samedi 25 novembre 2006 à 10:10, par Jean-Marie Le Ray
2. Le samedi 25 novembre 2006 à 10:20, par Sergi
3. Le vendredi 1 décembre 2006 à 11:03, par Baptiste
4. Le mardi 5 décembre 2006 à 02:34, par benm
5. Le mardi 5 décembre 2006 à 11:26, par Sergi
6. Le dimanche 16 septembre 2007 à 19:19, par dan
Ajouter un commentaire