【摘 要】本文介紹了利用.NET技術開發(fā)垂直搜索引擎的基本原理,分析了.NET架構(gòu)下垂直搜索引擎的特點和相關技術,并提出了基于.NET進行垂直搜索引擎開發(fā)的過程和方法。
【關鍵詞】NET 垂直搜索引擎;
一、引言
隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,使用互聯(lián)網(wǎng)獲取信息是現(xiàn)階段人們?nèi)〉眯畔⒌闹饕绞街弧T谑褂盟阉饕娴臋z索信息時,人們希望結(jié)果能夠更加專業(yè),能符合自己的定向需求,這些新的需求給搜索引擎技術提出了更高的深度要求,垂直搜索引擎技術就產(chǎn)生了[1]。隨著.NET開發(fā)平臺功能越來越強大,利用.NET開發(fā)程序越來越多,使用.NET開發(fā)搜索引擎也成為了一種新趨勢。本文分析了.NET架構(gòu)下垂直搜索引擎的原理和特點,利用.NET技術構(gòu)建一個垂直搜索引擎。
二、基于.NET垂直搜索引擎概述
(一)垂直搜索引擎整體結(jié)構(gòu)。一個簡單的搜索引擎主要有搜索和爬取兩部分組成,完整的結(jié)構(gòu)如圖1所示。垂直搜索引擎系統(tǒng)開發(fā)整體結(jié)構(gòu)是:首先獲取感興趣的文檔信息,文檔可以來源于Web或者數(shù)據(jù)庫等,也可以是本地路徑等,如果來源于互聯(lián)網(wǎng),就需用到爬蟲;接下來的文本需要提取寫入索引庫,建立索引項,同時要切分成一個個的單詞;最后通過給定的查詢服務器提供搜索功能[2]。
(二)垂直搜索引擎相關技術。垂直搜索引擎大體上需要以下幾種技術:1.定向的網(wǎng)絡爬蟲技術;2.網(wǎng)頁結(jié)構(gòu)化信息抽取技術或元數(shù)據(jù)采集技術;3.中文分詞、全文檢索技術;4.其他信息處理技術等。
(三)垂直搜索引擎技術評估判斷。一個垂直搜索引擎的技術評估,應從如下幾個方面進行判斷:1.全面性:能夠從眾多來源采集信息;2.更新性:用戶最后能夠在很短的時間里看到最新發(fā)布的信息;3.準確性:數(shù)據(jù)分類準確,不包含重復的冗余信息;4.功能性:功能完善,可以同時搜索文字,圖片,視頻信息等。
(四)Lucene.Net技術。近年來Lucene幾乎已經(jīng)成為全文搜索的同義詞。隨著.Net開發(fā)平臺越來越強大,作為Lucene在.Net平臺的移植版本,Lucene.Net很受歡迎。Lucene.Net是一個開源的全文檢索引擎開發(fā)包,它是一個全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎。開發(fā)人員可以利用Lucene.Net在.Net平臺上實現(xiàn)全文檢索的功能。
三、基于.NET垂直搜索引擎的開發(fā)過程
(一)開發(fā)網(wǎng)絡爬蟲。網(wǎng)絡爬蟲能夠從互聯(lián)網(wǎng)上源源不斷的抓取海量信息,搜索引擎的結(jié)果信息依據(jù)于此。網(wǎng)絡爬蟲實現(xiàn)的基本功能包括下載相關網(wǎng)頁并對URL地址進行遍歷。為了獲取信息,需要構(gòu)造有針對性的下載系統(tǒng)。網(wǎng)絡爬蟲運行前,要對所抓取的內(nèi)容進行詳細分析,了解網(wǎng)站的基本結(jié)構(gòu),以確定抓取的種子鏈接起始頁。網(wǎng)絡爬蟲以一個或者多個URL 作為種子,連續(xù)抓取頁面中滿足條件的新URL指向的頁面,并做內(nèi)容定向預分析和結(jié)果存儲。這個過程需要人工參與完成,也是信息定向抓取所必須完成的。
(二)從HTML文件中提取信息?;ヂ?lián)網(wǎng)上有數(shù)以億計的網(wǎng)頁,而網(wǎng)頁的基本元素就是HTML語言文件。HTML文件經(jīng)過瀏覽器解析后,能夠轉(zhuǎn)換成可視化的Web頁面。搜索引擎系統(tǒng)通過網(wǎng)絡爬蟲獲取這些HTML文件后,通過分析HTML的內(nèi)容,使用程序建立過濾器獲取對應信息。.NET平臺包含了功能強大的正則表達式實現(xiàn),可以用來從字符串提取信息。在開發(fā)過程中使用HTMLAgilityPack工具來提取網(wǎng)頁內(nèi)容。對合法的網(wǎng)頁用HTMLAgilityPack提供的API 來提取網(wǎng)頁中的有用信息,并把得到的信息按指定的格式保存到文本文件中。
想要有好的效果,也就是想得到處理后的產(chǎn)品的信息是比較規(guī)整的結(jié)構(gòu)化信息,那么必須建立在所抓取信息來源網(wǎng)站能夠提供的較完整的HTML結(jié)構(gòu)基礎上。
(三)實現(xiàn)中文分詞。關鍵詞提取是文本信息處理的一項重要任務,提取過程包括文本和系統(tǒng)參數(shù)的輸入,進行分詞和過濾停用詞,然后對單詞權(quán)重的計算和排序,最后提取文本關鍵詞。具體實現(xiàn)時要利用Lucene.Net的Analyzer來執(zhí)行分詞。首先要創(chuàng)建一個分析類(Analyzer),然后在索引類Spider和搜索類Search中使用它,用它替換已有的Analyzer類。
(四)創(chuàng)建索引庫并添加索引文檔。構(gòu)建索引器的主要任務是對下載的數(shù)據(jù)進行解析并建立索引。對已分析好的網(wǎng)頁,索引器在其抽象數(shù)據(jù)中選取索引項,建立索引。在建立索引文件時,需要將要索引的文件轉(zhuǎn)化成文本格式,就可利用Lucene.Net 所提供的簡單易用的索引建立方法,為這些文檔建立索引。
(五)實現(xiàn)搜索用戶界面。這部分的工作主要包括:搜索頁面的設計和實現(xiàn)搜索結(jié)果。設計顯示結(jié)果的ASP.NET頁面,在ASP.NET頁面中調(diào)用搜索程序,然后把頁面發(fā)布到IIS服務器中。用ASP.NET顯示Lucene.Net返回的搜索結(jié)果[3]。
四、總結(jié)
本文介紹了基于.NET垂直搜索引擎的基本原理和開發(fā)過程,包括網(wǎng)頁爬取,中文提取,中文分詞,建立索引和存儲,實現(xiàn)搜索用戶界面等。作為一名開發(fā)者,如果擔心Lucene.Net功能不夠,可以使用支持分布式索引的Solr。包括一些興趣度,排序優(yōu)先級,角色查詢等,這都將是下一階段要完成的工作。
參考文獻:
[1]勾智楠.垂直搜索引擎的研究與實現(xiàn)[D]. 河北科技大學, 2012
[2]張敏,杜華.垂直搜索引擎系統(tǒng)的設計與實現(xiàn)[J].情報科學,2011,29(3):441-442.
[3]羅剛.使用C#開發(fā)搜索引擎[M].北京:清華大學出版社, 2012
作者簡介:勾智楠(1985-),男,漢族,碩士,講師,工程師。主要從事自然語言處理、信息檢索、數(shù)據(jù)挖掘、軟件開發(fā)等方面的研發(fā)工作。