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.
Approfondimenti
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Short-circuiting della Pipeline in ASP.NET Core
Load test di ASP.NET Core con k6
Effettuare il binding di date in Blazor
Implementare il throttling in ASP.NET Core
I più letti di oggi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Steel Style CheckBox per Silverlight 4.0
- Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
- Speciale Windows Store app: costruire app con WinRT per Windows 8