Laboratorio: reconocimiento de un motor de búsqueda para navegadores

Una de las características más útiles que poseen actualmente los navegadores es la posibilidad de personalizar y añadir motores de búsqueda. Firefox lo dispone desde hace tiempo e Internet Explorer lo ha añadido en su última versión. Para poder tener un poco de orden en la creación de estos motores existe OpenSearch, que tal como dice la Wikipedia es:

es un conjunto de tecnologías que permiten publicar los resultados de una búsqueda en un formato adecuado para la sindicación y agregación. Es una forma para que las páginas web y los motores de búsqueda publiquen sus resultados de forma accesible

El proceso es sencillo, añades un XML en tu web y un acceso desde tus páginas para que el navegador lo reconozca y te avise de que existe para instalarlo directamente.

El XML sería el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>Sentido Web</ShortName>
<LongName>Sentido Web - Actualidad, productividad y desarrollo web...</LongName>
<Description>Encuentra todo lo que necesitas en tu día a día del desarrollo web.</Description>
<Tags>sentidoweb web internet blogs bitácoras weblogs web2.0 estándares css xhtml web-semántica php javascript</Tags>
<Contact>info@blogsmedia.com</Contact>
<Url type="text/html"     template="https://sentidoweb.com/bm/mt-search.cgi?IncludeBlogs=1&amp;search={searchTerms}&amp;submit.x=0&amp;submit.y=0&amp;submit=Buscar"/>
<Image height="16" width="16" type="image/vnd.microsoft.icon">https://sentidoweb.com/i/favicon.ico</Image>
<Query role="example" searchTerms="php" />
<Developer>Luis Sacristán Pascual</Developer>
<Attribution>BlogsMedia 2007, Creative Commons (Reconocimiento-NoComercial-SinObraDerivada 2.5)</Attribution>
<SyndicationRight>open</SyndicationRight>
<AdultContent>false</AdultContent>
<Language>es-es</Language>
<OutputEncoding>UTF-8</OutputEncoding>
<InputEncoding>UTF-8</InputEncoding>
</OpenSearchDescription>

Y la línea que hay que añadir a nuestras páginas en el header es la siguiente:

<link rel="search" type="application/opensearchdescription+xml"
href="http://dominio/path/opensearch.xml" title="Nuestro buscador" />

El XML de arriba es el que usamos para Sentido Web y aunque su lectura es clara, explicaremos cada una de las etiquetas del XML:

  • OpenSearchDescription: es la cabecera del XML de OpenSearch.
  • ShortName: contiene el nombre corto que identifica al motor de búsqueda. Debe tener como máximo 16 caracteres.
  • LongName: contiene el nombre largo que identifica al motor de búsqueda. Debe tener como máximo 48 caracteres.
  • Description: descripción del motor de búsqueda. Debe tener un máximo de 1024 caracteres.
  • Tags: conjunto de palabras separadas por espacios que describen el tipo de contenido que nos encontraremos en las búsquedas. Debe tener un máximo de 256 caracteres.
  • Contact: e-mail de contacto.
  • Url: indica el interfaz que el cliente (navegador) podrá utilizar para realizar la búsqueda. Dispone de varios parámetros que nos permiten personalizar la búsqueda:
    • type: tipo MIME del resultado de la búsqueda. Puede ser por ejemplo application/rss+xml para RSS o application/xhtml+xml para XHTML.
    • template: la plantilla de la URL para indicar al cliente cómo realizar la búsqueda, usando esta sintaxis.
    • indexOffset: contiene el índice del primer resultado de búsqueda.
    • pageOffset: contiene el número de la primera página de resultados.
  • Image: URL de la imagen que se asocia al buscador.
  • Query: define una búsqueda pueden realizar los clientes, más información aquí.
  • Developer: creador del xml.
  • AttributionEntidades a las que se les asocia el motor de búsqueda.
  • SyndicationRight: el grado de resultados que provee el buscador que se pueden buscar, mostrar y redistribuir.
  • AdultContent: indica si hay contenido para adultos.
  • Language: idioma del resultado de la búsqueda.
  • OutputEncoding: codificación de los datos de salida.
  • InputEncoding: codificación de los datos de entrada.

Existen otras etiquetas y se le pueden añadir otras si se indica un xmlns en la etiqueta OpenSearchDescription.