Un motore di ricerca per il proprio sito con BOSS

di: Christian Heilmann     09 Febbraio 2009

function found(o){
var list = document.createElement('ul');
var results = o.ysearchresponse.resultset_web;
if(results){
var item,link,description;

Creiamo una nuova lista e poi otteniamo l'array resultset_web dai dati restituiti dalla chiamata all'API. Se non vengono restituiti risultati, l'array non esisterà (ecco perché dovremo verificare che ci sia). Fatto tutto ciò, possiamo definire tre variabili per conservare il titolo dell'item, il link e la descrizione del link.

for(var i=0,j=results.length;i<j;i++){
item = document.createElement('li');
link = document.createElement('a');
link.setAttribute('href',results[i].clickurl);
link.innerHTML = results[i].title;
item.appendChild(link);
description = document.createElement('p');
description.innerHTML = results[i]['abstract'];
item.appendChild(description);
list.appendChild(item);
}

Poi facciamo un loop sull'array dei risultati e mettiamo insieme una lista con i titoli sotto forma di link e un paragrafo con il sommario. Notate come abbiamo definito abstract (è una parola riservata in Javascript2).

} else {
list = document.createElement('p');
list.appendChild(document.createTextNode(config.noresults));
}
form.replaceChild(list,out);
out = list;
};

Se non ci sono risultati, definiamo un paragrafo con un messaggio di avviso come list. In ogni caso rimpiazziamo il vecchio out (il messaggio di caricamento) con list e ridefiniamo out come list.

return{
config:config,
init:init,
found:found
};
}();

Ciò che rimane da fare è fare un return per le proprietà e i metodi che vogliamo rendere pubblici. In questo caso found deve essere pubblico perché ad esso accede quanto restituito dalle API di BOSS. Facciamo un return per init per renderlo accessibile e per config per consentire agli implementatori di fare l'override di queste proprietà.

Usare lo script

Per usare questo script dovrete solo aggiungerlo dopo il form definito nel documento, sostituire la API key con la vostra e richiamare init():

<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>
<script type="text/javascript" src="boss-site-search.js"></script>
<script type="text/javascript">
SITESEARCH.config.appID = 'copy-the-id-you-know-to-get-where';
SITESEARCH.init();
</script>

Possibili sviluppi

Questo è solo un semplice esempio di ciò che è possibile fare con BOSS. Potete definire linguaggi e regioni, rintracciare e mostrare immagini e news, mixare i risultati con altre fonti di dati prima di visualizzarli. Una funzionalità molto interessante è che aggiungendo un parametro view=keyterms all'URL potete ottenere le keywords di ciascun risultato per andare ancora più a fondo con la ricerca. Un esempio di questo approccio in PHP è disponibile su Yahoo Developer Network. Per Javascript c'è una soluzione chiamata yboss a vostra disposizione.

Guide JavaScript

Guida Node.js

Il framework che permette di per usare V8, l'interprete JavaScript...

Canvas, guida ai framework

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...

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 Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso JQuery e Ajax per Webmaster

03 Luglio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti