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.