Loreto Parisi Home

Pensieri e parole di un nomade informatico

Profile

Blogger: loretoparisi
Nome: Loreto Parisi
Just an Engineer!

  • Contattami
  • Il mio profilo
  • Linkami

View Loreto Parisi's profile on LinkedIn

Feeds

  • RSS 2.0
  • ATOM 0.3
  • Powered by Splinder

Visits

visitato *loading* volte

giovedì, 24 aprile 2008
Le API della Ricerca

Sebbene i motori di ricerca su Internet siano numerosi e differenziati per metodologia di ricerca e soprattutto per target (pensiamo ai motori specializzati per i blog, che cercano tra post e commenti), sono pochi quelli che mettono a disposizione API per la ricerca, e comunque in genere attraverso API keys, application IDs e identificatori del genere.
In particolare, le informazioni che viaggiano sulle rete attraverso le API, vengono ben rappresentate da codifiche quali XML e JSON (quest'ultima grazie alle applicazioni AJAX prende sempre più piede). In tal modo le applicazioni possono comunicare secondo un protocollo comune. Le interfacce di tali API sono per lo più XMLRPC, SOAP, e più recentemente REST. Tutte queste interfacce prendono spunto da architetture di tipo CORBA (Common Object Request Broker Architecture), che definiscono un modello per la comunicazione tra componenti remoti, secondo protocolli comuni e descrittori (IDL, Interface Description Language), come appunto la chiamata a procedura remota (Remote Procedure Call).
In particolare, nel caso dei motori di ricerca, i sistemi espongono semplici API XMLRPC o JSONRPC attraverso semplice HTTP GET/HTTP POST, il chè permette di invocare tali API dai più svariati linguaggi (dal JavaScript a Java, da PHP a Perl, da Flash a Ruby, ecc).
In genere, l'output è XML, e se siamo fortunati sotto forma di feed RSS/Atom, altrimenti l'xml ha un DTD (Document Type Definition), oppure ancora sono in JSON (array associati o hash).
Spesso permettono il passaggio di una callback, se chiamati da JavaScript, in modo da avere i risultati della chiamata in una funzione - del tipo foo(results), mentre librerie più sofisticate, permettono di implementare handler veri e propri (pensiamo ad esempio ad ActionScript di Flash).
Eccoci quindi catapultati nel mondo della API della Ricerca.
Iniziamo per ora con la Google AJAX Search API
L'API espone una semplice interfaccia REST e output di tipo JSON. Permette la ricerca su un numero diverso di servizi Google (Web Search, Local Search, Video Search, Blog Search, News Search, Book Search, e Image Search). Permette callback JavaScript, ed è facilmente interfacciabile da JavaScript, ActionScript (Flash), Java, Php, ecc.

Ecco un semplice esempio di chiamata alla AJAX Search API:

curl -e http://www.my-ajax-site.com \
 'http://ajax.googleapis.com/ajax/services/search/web?' \ 'v=1.0&q=Paris%20Hilton&callback=foo&context=bar'


Questa produrrà un output JSON del tipo:

{"responseData": {
 "results": [
  {
   "GsearchResultClass": "GwebSearch",
   "unescapedUrl": "http://en.wikipedia.org/wiki/Paris_Hilton",
   "url": "http://en.wikipedia.org/wiki/Paris_Hilton",
   "visibleUrl": "en.wikipedia.org",
   "cacheUrl": "http://www.google.com/search?q\u003dcache:TwrPfhd22hYJ:en.wikipedia.org",
   "title": "\u003cb\u003eParis Hilton\u003c/b\u003e - Wikipedia, the free encyclopedia",
   "titleNoFormatting": "Paris Hilton - Wikipedia, the free encyclopedia",
   "content": "\[1\] In 2006, she released her debut album..."
  },
  {
   "GsearchResultClass": "GwebSearch",
   "unescapedUrl": "http://www.imdb.com/name/nm0385296/",
   "url": "http://www.imdb.com/name/nm0385296/",
   "visibleUrl": "www.imdb.com",
   "cacheUrl": "http://www.google.com/search?q\u003dcache:1i34KkqnsooJ:www.imdb.com",
   "title": "\u003cb\u003eParis Hilton\u003c/b\u003e",
   "titleNoFormatting": "Paris Hilton",
   "content": "Self: Zoolander. Socialite \u003cb\u003eParis Hilton\u003c/b\u003e..."
  },
  ...
 ],
 "cursor": {
  "pages": [
   { "start": "0", "label": 1 },
   { "start": "4", "label": 2 },
   { "start": "8", "label": 3 },
   { "start": "12","label": 4 }
  ],
  "estimatedResultCount": "59600000",
  "currentPageIndex": 0,
  "moreResultsUrl": "http://www.google.com/search?oe\u003dutf8\u0026ie\u003dutf8..."
 }
}
, "responseDetails": null, "responseStatus": 200}

consentendo pertanto il recupero da remoto dei risultati della ricerca, e un accesso ad essi di tipo associativo (o con notazione puntata):

Supposto results l'array associativo con il precedente JSON, abbiamo:


var firstResult=results.responseData.results[0];
var firstResultUrl=firstResult.url;
var firstResultContent=firstResult.content;


e così via, in modo molto semplice dunque.

LP


Links:
Google AJAX Search API
JSON
XMLRPC
REST
JSONRPC(JABSORB)
CORBA

Postato da: loretoparisi a 00:02 | permalink | commenti | commenti (popup)
ajax, search, rest, json, google ajax search api, xmlrpc, jsonrpc



Comments

Presence

Search

Photos