Moteurs OpenSearch (pour Internet Explorer 7.0)

Qu'est-ce que OpenSearch ?

OpenSearch est une technique permettant à un site ou un programme d'effectuer une recherche grâce au moteur du site et à afficher les résultats. Le but avoué est de faire d'OpenSearch pour les recherches ce que RSS est pour le contenu. Pour faire simple, le moteur de recherche interne d'un site renvoie les résultats de la recherche sous forme d'un flux RSS que le programme (ou site) à l'origine de la recherche sait analyser et afficher.
Le gestionnaire du site doit également fournir un fichier XML simple "expliquant" comment utiliser son moteur (à quelle adresse il se trouve, comment donner les mots-clés, etc...). C'est ce fichier qui est utilisé par IE 7 pour utiliser la barre de recherche en haut à droite du navigateur.
Un site peut très bien proposer ce fichier, sans pour autant fournir les résultats de la recherche au format Opensearch, ce qui est très important pour nous car il nous offre la possibilité d'enregistrer n'importe quel moteur dans IE 7.

Plus d'info ?

OpenSearch a été proposé et développé par la société A9.com, ils s'y connaissent surement mieux que moi : site de référence.

OpenSearch et Internet Explorer 7.0

Revenons au but de cet page : l'intégration d'une recherche OpenSearch dans IE 7 par nos amis webmasters. Cette dernière se décompose en 3 étapes :

  1. La création du fichier XML ;
  2. L'enregistrement à long terme du moteur dans IE 7 ;
  3. L'utilisation "à la volée" dans IE 7.

Le fichier XML

Le fichier XML le plus sommaire doit comprendre les 3 balises "ShortName", "Description" et "Url". Pour les autres balises, voyez par vous-même sur le site de référence. (N'oubliez pas qu'il s'agit d'un fichier XML, les caractères spéciaux doivent être encodés : " & " deviendra " & " )

  1. Pour un site dont le moteur utilise la méthode HTTP GET :
    <?xml version="1.0" encoding="UTF-8"?>
    <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
    	<ShortName>Le nom de votre site</ShortName>
    	<Description>Une description rapide de votre site/moteur</Description>
    	<Url type="text/html" method="get" template="http://www.example.com/search.php&amp;keyword={searchTerms}" />
    	<Image height="16" width="16" type="image/x-icon">http://www.example.com/favicon.ico</Image>
    </OpenSearchDescription>
  2. Pour un site dont le moteur utilise la méthode HTTP POST (non-supporté par IE 7) :
    <?xml version="1.0" encoding="UTF-8"?>
    <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
    	<ShortName>Le nom de votre site</ShortName>
    	<Description>Une description rapide de votre site/moteur</Description>
    	<Url type="text/html" method="post" template="http://www.example.com/search.php">
    		<param name="keyword" value="{searchTerms}" />
    	</Url>
    	<Image height="16" width="16" type="image/x-icon">http://www.example.com/favicon.ico</Image>
    </OpenSearchDescription>

(Note : le support du tag "Image" n'est implémenté que depuis Internet Explorer 8)

L'enregistrement dans IE 7

Afin que l'utilisateur puisse utiliser le moteur de recherche directement dans son navigateur, il lui faut d'abord l'enregistrer. Et ici encore, tout le boulot revient au webmaster, le client n'ayant plus qu'à cliquer sur un lien. Le lien portera sur un évènement JavaScript d'IE7 ayant l'URL du fichier XML en paramètre :

<a href="#" onClick="window.external.AddSearchProvider('http://www.example.com/opensearch.xml')">Ajouter ce moteur de recherche dans Internet Explorer 7.0</a>

IE7 fournit également une nouvelle API "IsSearchProviderInstalled" qui permet de déterminer si le moteur de recherche a déjà été ajouté ou non dans les moteurs de recherche :

<script>if (window.external.IsSearchProviderInstalled('http://www.example.com') == 0){ /* Affiche un lien d'ajout */ }</script>

qui renverra 0, 1 ou 2 suivant que, respectivement, le moteur n’est pas installé, est installé ou est installé et définit comme moteur par défaut.
(Un site n'est autorisé à détecter que les moteurs de recherche du même domaine que le site lui-même : Moteur "example" - Test)

L'utilisation à la volée

Internet Explorer 7 laisse aussi la possibilité d'utiliser le moteur via la barre de recherche sans pour autant l'enregistrer. Je sais, j'ai l'air de me contredire, mais je m'explique : enregistrer un moteur dans IE 7 permet de l'utiliser, quelle que soit la page sur laquelle l'utilisateur se trouve. Par contre, via une balise HTML sur la page, le moteur de recherche sera enregistré temporairement dans la liste des moteurs, tant que l'utilisateur sera sur le site. Ce sera visible dans IE 7 car la petite flèche à coté de la loupe (elle-même à coté de la barre de recherche) se colorera en orange. IE 7 laissera même la possibilité à l'utilisateur d'enregistrer réellement le moteur.

<link title="Moteur de recherche du site Example" type="application/opensearchdescription+xml" rel="search" href="http://www.example.com/opensearch.xml" />

OpenSearch et les sites tiers

La facilité de création d'un fichier de description permet d'enregistrer facilement divers sites ne proposant pas eux-mêmes de description OpenSearch. En voici quelques-uns :

Notez bien que Microsoft fournit déjà une descriptions pour une série de sites ici. De plus, il existe un outil online permettant de créer ces fichiers de manière un peu plus "user-friendly".


Et voilà, j'espère que ça a pu être utile à au moins une personne :-)

Jereck.

(Une version PDF de ce document est disponible ici)