Inserire nel proprio sito un motore di ricerca che permetta di effettuare ricerche sia internamente che sul resto del web può essere un optional di indubbio valore per i nostri utenti.
Google fa al caso nostro perché ha messo a disposizione un web service che ci permette di fare ricerche e di gestire il risultato nel modo che vogliamo.
Di seguito un piccolo esempio per effettuare una ricerca sul web:
<%@ Page Language="vb" Debug="true" %> <%@ Assembly Src="search.vb" %> <%@ Import Namespace="System.Data" %> <SCRIPT runat="server"> 'costante indicante il numero di righe per pagina private const righe=10 dim start_index as integer Dim query as String private Sub Page_Load(byval sender as object,e as eventArgs) response.expires=0 if ispostback then exit sub start_index=0 bindResults End sub private Sub bindResults() dim s as new GoogleSearchService() dim r as GoogleSearchResult 'query = Request("query") query = "ASPItalia.com" 'richiamo il webservice - sostistuire key con la propria chiave r = s.doGoogleSearch("key",query,start_index*righe,righe,false ,"",false,"","","") trovati.Text = r.estimatedTotalResultsCount 'se non ha prodotto alcuni risultato allora salta il resto if ubound(r.resultElements)=-1 then exit sub ' nuova datable con i risultati dim dt as new DataTable() dt.columns.Add("url") dt.columns.Add("title") dt.columns.Add("summary") dt.columns.Add("cache") dim i as byte dim riga as dataRow 'informo il datagrid del totale degli item 'visto che utilizzo una customPaging results.VirtualItemCount=r.estimatedTotalResultsCount ' popolo for i=0 to ubound(r.resultElements)-1 riga=dt.NewRow riga("url")=r.resultElements(i).url riga("title")=r.resultElements(i).title riga("summary")=r.resultElements(i).snippet riga("cache")=r.resultElements(i).cachedSize dt.rows.add(riga) next i ' associazione dati e databinding results.dataSource=dt results.databind() 'distruggo logicamente gli oggetti r=Nothing s=Nothing End sub private Sub changePage(sender as Object , e as DataGridPageChangedEventArgs) results.CurrentPageIndex=e.NewPageIndex start_index=e.NewPageIndex bindResults End sub </SCRIPT> <form runat="server"> <p>Risultato della ricerca</p> <p>Trovati <asp:literal id="trovati" runat="server"></asp:literal> elementi corrispondenti alla parola di ricerca: <b><%=query%></b>
Pagina <%= (start_index+1) %> d <%= math.floor(trovati.text/righe) %>
autogeneratecolumns="false" OnPageIndexChanged="ChangePage"
showHeader="false" PagerStyle-Horizontalalign="right"
PagerStyle-CssClass="testo" PagerStyle-Mode="NumericPages"
Pagesize="<%# righe %>"
AllowPaging="true"
AllowCustomPaging="true">
" target="_blank"><%# Container.DataItem("title") %>
<%# Container.DataItem("summary") %>
Dimensione cache: <%# Container.DataItem("cache") %>
In questo esempio richiamiamo la classe GoogleSearchService creata tramite wsdl.exe (oppure VS.net) e che è contenuta nel file search.vb, compilato dinamicamente con l?istruzione @Assembly.
Per usufruire del web service bisogna andare all'URL
http://www.google.it/apis/
e scaricare l?SDK contenente alcuni esempi in .NET e Java, creare un account per avere la key in modo da autenticarsi e usufruire del servizio.
Il tutto limitatamente a 1000 ricerche giornaliere.
La key è da inserire al primo paramentro delle funzioni del web service.
Il codice d'esempio è molto semplice e Google permette anche di prelevare la pagine che ha in cache oppure di usufruire della correzione delle parole (una specie di controllo dell'ortografia) e nelle funzioni è possibile passare molteplici parametri: il mio consiglio è solo quello di guardare la documentazione dell'SDK, che è di facile comprensione.
Per vedere all'opera questo esempio:
https://www.aspitalia.com/liste/usag/esempi.asp?ID=392
Per maggiori informazioni su web services con ASP.NET si veda:
https://www.aspitalia.com/articoli/aspplus/webservice.asp
https://www.aspitalia.com/articoli/aspplus/webserviceXML.asp
https://www.aspitalia.com/articoli/aspplus/wsautenticazione.asp
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.