Supportare i suggerimenti nei plugin di ricerca

MozSearch supporta i suggerimenti di ricerca; mentre l'utente scrive nella barra di ricerca, Firefox 2 interroga l'URL specificato dal plugin di ricerca per ottenere i suggerimenti di ricerca.

Una volta che la lista è stata ottenuta, viene mostrata in una casella popup che appare sotto la barra di ricerca, che permette all'utente di selezionare uno dei termini suggeriti. Se l'utente continua a scrivere, una nuova lista di suggerimenti viene richiesta dal motore di ricerca e la casella si aggiorna.

I plugin di ricerca per Yahoo e Google inclusi in Firefox 2 supportano i suggerimenti di ricerca.

Implementare il supporto per i suggerimenti nel plugin

Per supportare i suggerimenti di ricerca, un plugin deve definire un elemento <Url> con un attributo type impostato a "application/x-suggestions+json". Questo significa che ci saranno due elementi <Url>: l'altro è l'URL principale della ricerca.

Per esempio, il plugin di Yahoo ha il seguente <Url>:

<Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&command={searchTerms}"/>

Se l'utente scrive "fir" nella barra di ricerca e poi fa una pausa, Firefox inserirà "fir" al posto di {searchTerms} e interrogherà l'URL:

<Url type="application/x-suggestions+json" template="http://ff.search.yahoo.com/gossip?output=fxjson&command=fir"/>

I risultati dell'interrogazione costituiranno la lista di suggerimenti.

Si veda Creare Plugin MozSearch per ulteriori informazioni su come implementare un plugin di ricerca.

Implementare il supporto per i suggerimenti sul server

La maggior parte del lavoro per gestire i suggerimenti di ricerca è effettivamente implementarli lato server. Se si desidera farlo, si deve implementare un programma che, ricevendo come parametri i termini di ricerca, restituisca i suggerimenti. Il programma sarà scritto in JavaScript Object Notation (JSON).

Quando un browser vuole ricevere una lista di corrispondenze per un dato termine, invia una richiesta HTTP GET all'URL specificato dall'elemento <Url>.

Il server dovrà allora decidere quali suggerimenti offrire utilizzando quelli che vi si addicono e costruire un JSON che consiste di un minimo di due e un massimo di quattro elementi:

query string
Il primo elemento nella query string originale in JSON. Questo permette a Firefox di verificare che il suggerimento corrisponda a quanto digitato dall'utente.
completion list
Un array di suggerimenti. L'array deve essere racchiuso tra parentesi quadre. Per esempio: <tt>["termine 1", "termine 2", "termine 3", "termine 4"]</tt>
descriptions
Questo elemento è opzionale ed è un array di descrizioni per ognuno dei suggerimenti presenti nella completion list. Queste possono essere informazioni aggiuntive che il motore di ricerca potrebbe restituire perchè vengano visualizzate dal browser, così come il numero di risultati che verranno trovati.
Questo elemento non è supportato in Firefox 2 e se presente sarà ignorato.
URL
Questo elemento è opzionale ed è un array di URL alternativi per ognuno dei suggerimenti presenti nella completion list. Per esempio, se si desidera offrire una mappa di link invece di una semplice pagina di risultati, è possibile restituire un URL a una mappa in questo array.
Se non si specifica un URL da interrogare, viene utilizzato l'URL di default specificato nell'elemento <Url> del plugin.
Questo elemento non è supportato in Firefox 2 e se presente sarà ignorato.

Per esempio, se il termine di ricerca è "fir" e non si necessita di restituire alcuna descrizione o URL di ricerca alternativo, si può restituire il sequente JSON:

["fir", ["firefox", "first choice", "mozilla firefox"]]

Si noti che in questo esempio sono stati specificati solo la query string e l'array di completamento, tralasciando tutti gli elementi opzionali.

La completion list può includere tanti suggerimenti quanti si desidera offrirne, sebbene sia meglio mantenerla maneggevole, dato che la casella dei suggerimenti si aggiorna mente l'utente continua a scrivere. Inoltre, il criterio utilizzato per selezionare i suggerimenti da offrire viene lasciato interamente allo sviluppatore.

Document Tags and Contributors

Contributors to this page: Federico
Last updated by: Federico,