#392 - Creare un motore di ricerca con Google e ASP.NET

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>
<br><i><b>Pagina <%= (start_index+1) %> d <%= math.floor(trovati.text/righe) %></b></i>
</p>

<asp:datagrid id="results" runat="server" cellpadding="4"
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">
<columns>
  <asp:templateColumn>
    <itemtemplate>
      <a href="<%# Container.DataItem("url") %>" target="_blank"><%# Container.DataItem("title") %></a>
      <br>  <%# Container.DataItem("summary") %><br>
      <i> Dimensione cache: <%# Container.DataItem("cache") %> </i>
    </itemtemplate>
  </asp:templateColumn>
</columns>
</asp:datagrid>
</form>

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:
http://net.aspitalia.com/liste/usag/esempi.asp?ID=392

Per maggiori informazioni su web services con ASP.NET si veda:
http://www.aspitalia.com/articoli/aspplus/webservice.asp
http://www.aspitalia.com/articoli/aspplus/webserviceXML.asp
http://www.aspitalia.com/articoli/aspplus/wsautenticazione.asp


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

arih80 scrive:
#392 - Creare un motore di ricerca con Google e ASP.NET

non funziona....ho scarico il tutto dalle api di google e ho fatto una sottocartella.ho lanciato il comando wdsl....ecc ma mi dice che non sono ...
giovedì 5 settembre 2002 | 2 risposte
kekko82 scrive:
#392 - Creare un motore di ricerca con Google e ASP.NET

Aiuto! Ho questo errore dopo la ricerca. Infatti mi da bene la prima pagina, ma andando alla successiva o ad altre seguenti mi da questo errore:Server...
mercoledì 30 luglio 2003 | 3 risposte
Ricciolo scrive:
#392 - Creare un motore di ricerca con Google e ASP.NET

Salve ragazzi. Ho visto che qualcuno ha difficoltà nell'usare la ricerca con google e in particolar modo nell'utilizzo della classe GoogleSearch.Per ...
venerdì 28 giugno 2002 | 7 risposte

Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC