Un motore di ricerca per il proprio sito con BOSS

di: Christian Heilmann     09 Febbraio 2009

Questa è la traduzione dell'articolo Sitewide Search On A Shoe String di Christian Heilmann pubblicato originariamente su 24 Ways il 4 Dicembre 2008.

Una delle domande che più mi venivano rivolte quando realizzavo siti per le piccole aziende era se potevo creare un motore di ricerca per il sito. I visitatori dovevano essere in grado di fare ricerche solo su quel sito e trovare le cose che loro interessavano senza che il gestore del sito dovesse preoccuparsi di aggiungere a mano sulle varie pagine link verso "articoli correlati" o "articoli in evidenza".

All'epoca le cose non erano davvero semplici: bisognava scriversi da soli un tool per lo scraping, usare ht://dig o affidarsi a servizi a pagamento come quelli offerti da Yahoo, Altavista e successivamente Google. Nel primo caso bisognava ingoiare l'amara pillola dell'indicizzazione dei contenuti presenti sul sito e della loro archiviazione in un database per un accesso veloce, nel secondo caso ad essere colpito era il portafoglio.

I tempi sono cambiati, e oggi potete ottenere le stesse funzionalità gratuitamente usando il servizio di Yahoo chiamato BOSS (Build your own search service). La cosa più interessante di BOSS è che consente di usare un grandissimo numero di accessi al giorno e che è possibile gestire i dati restituiti come output in qualunque formato desideriate. Un'altra caratteristica valida è che tra le opzioni di output offre anche JSON-P, il che rende possibile usarlo senza alcun componente lato server!

Iniziamo con il form HTML

Per aggiungere un servizio di ricerca al vostro sito, potete iniziare con un semplice modulo HTML che potete usare senza Javascript. La maggior parte dei motori di ricerca vi consentono di filtrare i risultati in base al dominio. In questo caso effettueremo ricerche solo sul sito "bbc.co.uk". Se usate Yahoo come ricerca standard, il form potrebbe essere così:

<form id="customsearch" action="http://search.yahoo.com/search">
<div>
<label for="p">Search this site:</label>
<input type="text" name="p" id="term">
<input type="hidden" name="vs" id="site" value="bbc.co.uk">
<input type="submit" value="go">
</div>
</form>

L'equivalente usando Google sarà:

<form id="customsearch" action="http://www.google.co.uk/search">
<div>
<label for="p">Search this site:</label>
<input type="text" name="as_q" id="term">
<input type="hidden" name="as_sitesearch" id="site" value="bbc.co.uk">
<input type="submit" value="go">
</div>
</form>

In ogni caso assicuratevi di usare l'ID term per il termine usato nella ricerca dal momento che proprio term useremo per il nostro script. Per rendere le cose più semplici, usate anche un ID chiamato customsearch sul form.

Per usare BOSS, poi, dovreste ottenere da Yahoo una API per sviluppatori e sostituirla a quella usata nelle demo che vedremo. C'è un tracking dei click sui risultati della ricerca per verificare quanto successo ha l'applicazione, così dovreste usare la vostra API.

Aggiungere la magia di BOSS

BOSS è un API REST. Significa che potete usarlo in qualunque richiesta HTTP o in un browser semplicemente aggiungendo i parametri giusti all'URL. Diciamo, per esempio, di voler cercare la parola "christmas" sul sito "bbc.co.uk". Tutto quello che dobbiamo fare è aprire il seguente URL:

Provatelo cliccandoci sopra: vedrete i risultati in formato XML. Noi però non vogliamo XML, per cui eliminiamo il parametro format=xml e otteniamo il risultato nel formato JSON:

Guide JavaScript

Canvas, guida pratica

Canvas, tra gli elementi di HTML5 è forse quello di maggior impatto....

Guida jQuery UI

Creare siti ricchi e dinamici con jQuery UI, il progetto ufficiale...

Guida Javascript: tecniche avanzate

Una guida dal taglio pratico per approfondire la programmazione a...

Altre guide

Newsletter @JavaScript

Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

27 Febbraio 2012 a Milano
Disponibilità: 7 Posti

Corso Webmaster base

12 Marzo 2012 a Milano
Disponibilità: 6 Posti

Corso Webmaster base

20 Febbraio 2012 a Roma
Disponibilità: 7 Posti

Corso Google AdWords Base

28 Marzo 2012 a Roma
Disponibilità: 7 Posti