Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

OpenSearch, application à ce blog

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)