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!
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.
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:
|
Ottimizzare le Performance di jQuery: cache e concatenazione |
Canvas, guida praticaCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida jQuery UICreare siti ricchi e dinamici con jQuery UI, il progetto ufficiale... |
Guida Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Google AdWords Base27 Febbraio 2012 a Milano |
|
|
Corso Webmaster base12 Marzo 2012 a Milano |
|
|
Corso Webmaster base20 Febbraio 2012 a Roma |
|
|
Corso Google AdWords Base28 Marzo 2012 a Roma |