Creare un motore di ricerca con Google e ASP.NET

di Cristian Civera, in UserScript, ASP.NET, DataBinding,

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) %>


cellspacing="0" border="0" width="100%"
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

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

I più letti di oggi