2009年4月14日 星期二

介紹 ASP.NET Application Services 1-2

RunPC165期:領先體驗微軟ASP.NET的「未來之路」(2)哇~原來搜尋引擎可以這麼親近我的站台

為自已的網站加入搜尋功能
學會利用ASP.NET Futures產生Sitemaps與將其提交至各搜尋引擎,這僅是讓搜尋引擎易於將我們的網站進行收錄與建立索引,如此一來卻僅僅對來自於搜尋引擎的訪客有用,如果要站內的搜索也透過網路搜索引擎(如:Google、Yahoo、MSN)來實現,以避免自己再開發站內的搜索引擎呢?早期是透過各搜尋引擎所提供搜尋方塊框的HTML直接嵌入網站的網頁內,請參考程式碼4,除提供搜尋引擎的搜尋功能外,亦可針對站內內容進行搜尋,各搜尋引擎的搜尋方塊框資訊,此方式在客製化上功能上較為簡略;後各搜尋引擎也可提供Search API,讓我們網站或程式透過呼叫Search API的方式完成搜尋功能;而ASP.NET Futures 本身已內鍵Windows Live Search的provider,只要透過簡單的配置檔設定、SearchDataSource控制項與簡易的程式即可完成站內搜尋功能,當然這種方式版面的配置會比採用搜尋方塊框的方式主控權會來得好許多。當然除了使用內鍵的WindowsLiveSearchProvider提供的功能,我也可以依WindowsLiveSearchProvider繼承SearchProviderBase 實做出自己延伸類別,如官方網站Enabling Search頁面上,提供自訂Yahoo和Index Server兩個自定義的provider,亦可依照此法實作出Google自定義的provider。當然你亦可以整合多家搜尋引擎搜尋回來的結果加以比對分析組合,產生真正符合你需求的搜尋功能。

程式4: Google、Yahoo、百度的搜尋方塊HTML


Windows Live站內搜尋實作
首先請至http://search.msn.com/developer申請取得一個appID;接著修改配置檔於< microsoft.web.preview>內加入< search enabled="true">< providers>< add name="WindowsLiveSearchProvider" type="Microsoft.Web.Preview.Search.WindowsLiveSearchProvider, Microsoft.Web.Preview" appID="MyAppID" siteDomainName="MySiteDomainName"/>< /providers>< /search>打開搜尋功能,加入Windows Live Search的Provider,其中MyAppID填入你申請的appID,而MySiteDomainName請填入你的網域名稱(筆者設定為asp.net)。最後新增一個aspx網頁,從工具箱中拖曵出一個TextBox當關鍵字欄位、一Button當觸發搜尋用,該Button_Click事件內輸入Me.SearchDataSource1.DataBind()、一GridView當呈現搜尋結果用、一SearchDataSource搜尋資料來源控制項,它與一般的資料來源控制項(如:ObjectDataSource、SqlDataSource)一樣,都可以繫結至DataList、GridView、Repeater等控制項,本範例繫結至GridView控制項,而且可以自動提供要呈現的資料,且因為繫結至此控制項的結果屬於SearchResult型別,它包含Title、URL和Description等屬性,實作程式碼如程式5所示,而執行後輸入關鍵字AJAX按下搜尋鈕,可搜尋asp.net站內AJAX的結果如圖七所示。

程式5: 搜尋頁面程式碼



圖七 實作Windows Live搜尋站台結果。


總結
本期筆者為各位介紹ASP.NET Futures內提供Application Services其中二項與搜尋引擎相關的服務與實作方式,Search Sitemaps可以幫助搜尋引擎更容易收錄站台,它提供以設定配置檔的方式來使用此服務,動態產生出站台的導航資訊檔,和動態從資料來源建立的Sitemaps方式,最後提交至各搜尋引擎,使搜尋引擎能探索遍我們整個站台,唯此僅對來自於搜索引擎的訪客有用,若希望也透過網路搜尋引擎來現實站內搜尋,則可借由Search Application Services內鍵的WindowsLiveSearchProvider或繼承SearchProviderBase 實做出自己延伸類別,將搜尋引擎整個嵌入我們的站台,完成站台的搜尋功能,使搜尋引擎不僅可索遍整個站台更進一步嵌入我們的站台。

參考資源

ASP.NET Futures快速教學網:http://quickstarts.asp.net/Futures/
ASP.NET Futures官方論壇網:http://forums.asp.net/1127.aspx
SiteMap官方網站:http://www.sitemaps.org

沒有留言:

加入書籤: MyShare HemiDemi Baidu Google Bookmarks Yahoo! My Web PChome Del.icio.us Digg technorati furludn bookmark 其他更多書籤

BOOKS:New and Upcoming