Première rédaction de cet article le 15 mai 2011
La norme OpenSearch permet de décrire de manière formelle les capacités de recherche d'un site Web, de façon à faciliter la réalisation d'interfaces utilisateur qui effectuent des recherches. Je viens d'installer une description OpenSearch sur ce blog, qui permet d'utiliser plus facilement son moteur de recherche.
Des tas de sites Web ont un moteur de recherche. Comme chacun utilise une interface légèrement différente, produire une interface qui pourra interroger plusieurs moteurs (comme la fonction de recherche de Firefox, en haut à droite) était très compliqué. OpenSearch a changé cela, en permettant de décrire, en XML, les caractéristiques d'un moteur de recherche. Les logiciels comme Firefox peuvent ensuite s'adapter automatiquement.
La norme officielle est consultable en http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document
. Voici,
à titre d'exemple, un résumé de la description de ce blog :
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> <ShortName>Blog Bortzmeyer</ShortName> <Description>Recherche dans le blog de Stéphane Bortzmeyer</Description> <InputEncoding>UTF-8</InputEncoding> <SearchForm>http://www.bortzmeyer.org/search</SearchForm> <Url type="text/html" method="GET" template="http://www.bortzmeyer.org/search"> <Param name="pattern" value="{searchTerms}"/> <Param name="default_connector" value="AND"/> </Url> </OpenSearchDescription>
Vous pouvez aussi consulter la version complète. C'est donc assez simple à écrire en suivant la documentation, ou bien
en s'inspirant de descriptions existantes (comme celle
de Facebook). Il existe aussi un service, http://www.searchplugins.net/
, qui permet de construire ces
descriptions interactivement et de les installer dans la foulée (il
n'est par contre pas pratique si on veut récupérer le fichier XML de
description : il faut alors regarder le source de la page
HTML et trouver l'URL
dudit fichier XML).
OK, on a maintenant une description du moteur de recherche du
site. Comment dire au navigateur Web de
l'inclure ? Il y a plusieurs solutions. On peut utiliser un peu de
code JavaScript qui appelle
window.external.AddSearchProvider
, comme par
exemple en http://www.bortzmeyer.org/others/add-search-engine.html
(regardez le source pour voir comment ça marche). Mais la solution la
plus propre me semble être un élément XHTML
<link>
de type search
,
comme indiqué dans
la documentation de Firefox. Voici un exemple :
<link rel="search" type="application/opensearchdescription+xml" href="http://www.bortzmeyer.org/others/add-search-engine.xml" title="Blog Bortzmeyer" />
Facebook, déjà cité, a un tel code dans ses pages, regardez le
source. Ces types (comme search
, officiellement
enregistré en novembre 2010) pour l'élément
<link>
sont normalisés dans le RFC 8288. C'est un tel code qui existe désormais dans
les pages de ce blog, permettant à Firefox d'afficher une option
d'ajout du moteur de recherche « Blog Bortzmeyer », en bas du menu des
moteurs de recherche.
Google Chrome permet également d'ajouter des descriptions OpenSearch (par le biais du code JavaScript déjà cité). Une fois que c'est fait, on peut utiliser ces moteurs de recherche en tapant le début du nom de domaine (dans mon cas, "bortzmeyer", par exemple) puis la touche tabulation (merci à fil pour la remarque).
Plusieurs autres ressources sont disponibles en http://www.opensearch.org/
, n'hésitez pas à le parcourir.
Merci à Nicolas Krebs de m'avoir encouragé et à Patrick Mevzek pour ses descriptions de divers sites utiles, qui m'ont donné envie de m'y mettre sérieusement.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)