MozSearch admite sugerencias mientras el usuario escribe el la barra de búsqueda, Firefox 2 pregunta a la URL especificada por el plugins del motor de búsqueda para devolver sugerencias en tiempo real.
Una vez que se ha obtenido la lista, se muestra en un cuadro emergente que aparece debajo de la barra de búsqueda, que permite al usuario seleccionar un término sugerido. Si el usuario continua escribiendo, se solicita una nueva lista de sugerencias al motor de búsqueda, y se muestra actualizada.
Los plugins de Yahoo y Google incluidos en Firefox 2 admiten sugerencias de búsqueda.
Implementar soporte para sugerencias en un plugin de búsqueda
Para soportar sugerencias, un plugin de búsquedaa necesita definir un elemento extra <Url>
con su atributo type
definido como "application/x-suggestions+json"
. (esto significa que los plugins con soporte para sugerencias tendrán dos elementos <Url>
, siendo el otro la URL principal text/html
.)
Por ejemplo, el plugin de búsqueda de Yahoo tiene esta <Url>
:
<Url type="application/x-suggestions+json" template="https://ff.search.yahoo.com/gossip?output=fxjson&command={searchTerms}"/>
Si el usuario escribe "fir" en la barra de búsqueda, y se detiene, Firefox insertará "fir" en el lugar de {searchTerms}
y consultará esa URL:
<Url type="application/x-suggestions+json" template="https://ff.search.yahoo.com/gossip?output=fxjson&command=fir"/>
Los resultados son usados para construir el diálogo con la lista de sugerencias.
Lee Creación de plugins MozSearch para conocer mas sobre como implementar un plugin de búsqueda.
Implementar las sugerencias en el servidor
La mayor parte del trabajo para manipular las sugerencias de búsqueda es realmente implementada en el lado del servidor. Si eres desarrollador web, y quieres soportar las sugerencias de búsqueda, necesitas implementar el soporte para devolver las sugerencias en JavaScript Object Notation (JSON) dado un termino de búsqueda.
Cuando el navegador desea obtener posibles resultados de un término de búsqueda, envia una solicitud HTTP GET a la URL especificada por el elemento <Url>
.
Tu servidor debe entonces decidir que sugerencias debe ofrecer usando los medios que vea necesarios, y construyedo un JSON que consista en al menos dos, y como mucho cuatro, elementos:
- query string
- El primer elemento en el JSON es la cadena de búsqueda original. Esto permite a Firefox verificar que la sugerencia concuerda con el término de búsqueda actual.
- completion list
- Un array de los términos sugeridos. El array debe estar entre corchetes. Por ejemplo: <tt>["termino 1", "termino 2", "termino 3", "termino 4"]</tt>
- descriptions
- Este elemento opcional es un array de descripciones de cada sugerencia en la completion list. Esto puede ser cualquier información que el motor de búsqueda quiera devolver para que se muestre en el navegador, como el numero de resultados disponibles para dicha búsqueda.
- query URLs
- Este elemento opcional es un array de URLs alternativas para cada sugerencia de la completion list. Por ejemplo, si quieres ofrecer un enlace a un mapa en vez de simplemente un resultado de búsqueda para una sugerencia, puedes devolver una URL a un mapa en este array.
- Si no especificas una URL para la petición, la petición por defecto se manda por defecto al elemento
<Url>
definido en la descripción XML del plugin.
Por ejemplo, si el término a buscar es "fir", y no necesitas devolver descripciones o urls alternativas, puedes devolver el siguiente JSON:
["fir", ["firefox", "first choice", "mozilla firefox"]]
Date cuenta que en este ejemplo, solo se especifican la query string y el completion array, sin especificar los elementos opcionales.
Tu completion list puede incluir tantas sugerencias como quieras, aunque debe mantenerse manejable, dado que los datos se estarán actualizando en tiempo real mientras el usuario está escribiendo una palabra. Además, el método que usas para elegir las sugerencias depende de ti.