Usare Search come un servizio nei tuoi siti e nei tuoi client

di Alessandro Catorcini, Paolo Codato, in Windows Live Services,

Live Search è il prodotto che Microsoft offre come Search Engine globale. Come tutti i motori di ricerca, il suo scopo è di estrarre a partire da una query composta da parole chiave i risultati più rilevanti.

I motori di ricerca del secolo scorso ritornavano sempre e solo link a siti web come risultati. Una delle evoluzioni del XXI secolo è la diversificazione dei dati e il consentire di andare al di là dei dieci link blu nella risposta. Per ottenere questo, i dati nell'indice non sono più soltanto ottenuti interpretando ex post i dati destrutturati contenuti nell'HTML del web, ma anche dati nativamente strutturati offerti come tali (per esempio i dati delle Pagine Gialle o le mappe di Virtual Earth).

Purtroppo nella versione italiana del motore molte funzionalità non sono ancora attive, ma query come "Vento Milano" ritornano una inline answer con le previsioni del tempo per i prossimi cinque giorni, o query come "Berlusconi" ritornano in cima alla lista dei risultati una news answer con le notizie più recenti su questo argomento.

Live Search offre feature molto flessibili e potenti per interagire programmaticamente con il motore di ricerca. In questo articolo esamineremo l'offerta e forniremo alcuni esempi di come questi servizi si possono integrare nelle tue applicazioni.

Una breve analisi di Live Search

Negli ultimi anni si sta intensificando lo sforzo da parte di tutti i motori di ricerca per aumentare la propria utilità ed allontanarsi dal modello dei "dieci link blu" che costituiscono la risposta tipica di un motore di ricerca del secolo scorso. In questa direzione in Live Search sono state introdotte tra le altre cose sofisticate ricerche multimediali (video e immagini), un correttore ortografico come web service, una migliore integrazione con i dati locali (pagine gialle) e ricerche mirate alle notizie. Tutti questi servizi sono oggi accessibili programmaticamente.

I servizi disponibili oggi

Live Search offre due modi di interagire con il motore di ricerca: da un lato è disponibile un web service SOAP pensato per offrire la potenza necessaria a chiunque voglia accedere a web, news, pagine gialle e bianche, immagini. Per chi invece è alla ricerca di una soluzione semplice e versatile per aggiungere una funzionalità di search per il proprio sito e per il web, si può includere una semplice search-box AJAX.

Il controllo Search Box/AJAX

Questa soluzione è ideale per chi vuole semplicemente aggiungere una funzionalità di search all'interno del proprio sito. Tutto quello che si deve fare è andare su http://search.live.com/siteowner. Ci sono due opzioni - basic e advanced. L'opzione basic non fa altro che generare un search box che naviga nel SERP (Search Engine Results Page) di Live Search - non troppo complicato. Per i pigri questo è il codice:

<form method="get" action="http://search.live.com/results.aspx">

<input type="hidden" name="cp" value="1252"/>
<input type="hidden" name="FORM" value="FREEWS"/>
<input type="hidden" name="mkt" value="it-IT"/>

<!-- Se si vuole che la site search sia limitata ad uno o piu' domini -->
<input type="hidden" name="q1" value= "*** Il tuo dominio ***" />

<table bgcolor="#FFFFFF"><tr>
<td><a href="http://search.live.com/"><img src="http://search.live.com/s/affillogoLive.gif" border="0" alt="Live Search"/></a></td>
<td><input type="text" name="q" size="30" /><input type="submit" value="Search Web"/></td>
</tr></table>

</form>

L'opzione advanced è decisamente più interessante. Per provarla basta seguire tre semplici passi nel wizard che si trova su http://search.live.com/siteowner/searchboxstep1.aspx. Questo tipo di controllo usa una API AJAX per effettuare una web search e mostrare i risultati in un fly-out del quale si possono controllare le dimensioni e alcune caratteristiche dello stile.

Per ogni sito o macro che si aggiunge alla lista, verrà creato un tab nel fly-out con i risultati.

Si può provare la funzionalità e il look-and-feel della propria searchbox prima di passare allo step 3 del wizard che consente di copiare e incollare l'HTML che implementa la funzionalità.

Il servizio SOAP - Live Search API 1.1b

Questo servizio è stato progettato per dare un accesso semplice a chiunque scriva usando .NET. Basta includere il web reference al SOAP endpoint http://soap.search.live.com/webservices.asmx?wsdl. La documentazione completa per questo servizio è disponibile direttamente in MSDN.

Per utilizzare questa interfaccia bisogna per prima cosa ottenere un application ID (AppID). Questo viene utilizzato per determinare la quota d'utilizzo per ogni applicazione e per riconoscere se un'applicazione ha accesso ai tipi privilegiati (inline answers e video search).

Ottenere un AppID è molto semplice: basta navigare alla pagina http://search.live.com/developer, cliccare su "Get an AppID" e, una volta loggati con il proprio Windows Live ID, accettare i termini di uso.

Tra i vincoli dei termini d'uso, due sono quelli che contano:

  • non è consentito l'uso del servizio se si mostrano i risultati in una pagina che contenga Search Ads che non siano di Microsoft (ovvero, niente AdSense);
  • l'uso gratuito è limitato a 25.000 query al giorno (750.000 query al mese) con un rate massimo di 8 query al secondo.

Una volta ottenuto il tuo AppID, è tempo di lanciare Visual Studio e cominciare a giocare. Per questo articolo useremo un esempio che alla fine creerà un search mash-up, ovvero una pagina che ritorni immagini, notizie e web in una sola pagina. Avremo anche una feature nella pagina tale che, se termini della query verranno segnalati come errori ortografici, suggerirà la query corretta.

Cominciamo col lanciare Visual Studio e creare un nuovo WebSite ASP.NET. Per questo esempio useremo Visual Basic - è banale portare il tutto in C# o IronPython.

Per prima cosa aggiungiamo un web reference a http://soap.search.live.com/webservices.asmx?wsdl. Visual Studio troverà il servizio MSNSearchService: cambiamo il namespace di default affinchè sia Microsoft.Live.Search.

A questo punto è tempo di aprire default.aspx.vb. Nell'esempio avremo bisogno di due Imports:

Imports Microsoft.Live.Search
Imports System.Collections.Generic

All'interno della classe l'AppID è una costante simbolica:

Const appId As String = "Il tuo AppID"

mentre il proxy del servizio può essere definito come un campo statico:

Private Shared search As New MSNSearchService()

Ogni transazione con Live Search è composta da un oggetto di tipo SearchRequest che contiene la query e alcuni parametri validi per tutti i tipi di ricerca (source type), quali AppID, CultureInfo o SafeSearchOptions. Questo ultimo parametro determina se i risultati della query classificati per adulti saranno ritornati o no. Un ulteriore componente di SearchRequest è un array di SourceRequest. Questi oggetti contengono i parametri specifici per un source type. Nel nostro caso, ogni chiamata al servizio deve ritornare i risultati del web search, news search, image search e spellchecker. Quindi abbiamo bisogno di quattro oggetti SourceRequest:

Private spellerSource, imageSource, newsSource, webSource As _
  New SourceRequest()
Private srchRequest As New SearchRequest()

Considerando che tutti questi oggetti hanno un lifetime corrispondente alla pagina, per migliorare le prestazioni è opportuno gestire la loro creazione in Page_Init piuttosto che in Page_Load.

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

  imageSource.Source = SourceType.Image
  imageSource.Count = 5 ' max 5 immagini
  imageSource.ResultFields = ResultFieldMask.Image Or ResultFieldMask.Url

  newsSource.Source = SourceType.News
  newsSource.ResultFields = ResultFieldMask.Source Or ResultFieldMask.All

  webSource.Source = SourceType.Web
  spellerSource.Source = SourceType.Spelling

  ' Costruisce la search request e la inizializza
  With srchRequest
    .AppID = appId
    .Requests = New SourceRequest() { spellerSource, imageSource, _
      newsSource, webSource }
    .CultureInfo = "it-IT"
    .SafeSearch = SafeSearchOptions.Strict ' niente risultati per adulti (VM18)
  End With

End Sub

ResultFields è una serie di flag che controllano quali campi vengono gestiti dal servizio. Nel caso delle immagini, vogliamo solo i dati dell'immagine (dimensioni, thumbnail) e il suo Url, mentre per le news vogliamo sapere la fonte insieme a tutti i field standard per una web search (il valore .All in realtà va interpretato come "common").

2 pagine in totale: 1 2
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata