摘要:隨著計算機(jī)技術(shù)的發(fā)展,檔案信息的檢索技術(shù)有待提高,垂直搜索引擎作為面向特定主題的搜索引擎,非常適合用來開發(fā)專業(yè)領(lǐng)域的搜索引擎。介紹了垂直搜索引擎的特點和系統(tǒng)結(jié)構(gòu),引入了Lucene.net的開源項目,提出了實現(xiàn)基于Lucene.net的檔案垂直搜索引擎的設(shè)計方案,給出了搜索引擎系統(tǒng)中采集模塊、索引模塊和檢索模塊的實現(xiàn)方法。
關(guān)鍵詞:檔案檢索 垂直搜索引擎 Lucene.net技術(shù)
計算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展推動了檔案信息化的發(fā)展。但是,我國檔案信息化建設(shè)還處于初步發(fā)展階段,存在許多問題,一些檔案館只提供檔案目錄的簡單檢索而不能提供智能化或?qū)iT用于檔案領(lǐng)域的搜索服務(wù),各類檔案資源成為信息孤島。如何充分利用現(xiàn)有檔案資源,提高檔案利用率成為我們急需解決的問題。搜索引擎作為互聯(lián)網(wǎng)發(fā)展的核心技術(shù),將互聯(lián)網(wǎng)上各種不同格式的網(wǎng)絡(luò)資源搜集并整理,挖掘其中大量隱含資源,提供海量數(shù)據(jù)服務(wù)于用戶,在各行各業(yè)發(fā)揮著重要的作用①。垂直搜索引擎是在普通搜索引擎的基礎(chǔ)上發(fā)展而來的,是指專門針對某一特定領(lǐng)域的搜索引擎。檔案垂直搜索引擎就是將搜索引擎技術(shù)引入檔案領(lǐng)域,構(gòu)建面向檔案領(lǐng)域的搜索引擎,該搜索引擎可以大量收集互聯(lián)網(wǎng)上檔案相關(guān)資源,進(jìn)行優(yōu)化整合,提供給用戶具有價值的檔案信息,最大限度的滿足檔案用戶的需求。
一、垂直搜索引擎
搜索引擎一般分為通用搜索引擎和垂直搜索引擎,百度、谷歌、搜狗等均屬于通用搜索引擎,通用搜索引擎是針對互聯(lián)網(wǎng)上所有網(wǎng)站的信息進(jìn)行搜集和檢索,其范圍覆蓋了各個領(lǐng)域和各個行業(yè)。垂直搜索引擎是一種特定面向主題的專業(yè)搜索引擎,是針對某一特定領(lǐng)域、某一特定人群或某一特定需求,面向某一特定的用戶群體,提供更有價值、更準(zhǔn)確的信息服務(wù),是通用搜索引擎的細(xì)分和延伸②。與通用搜索引擎相比,垂直搜索引擎具有如下特點:
第一,垂直搜索引擎面向特定的領(lǐng)域,其信息量相對較小,但對其特定領(lǐng)域資源的覆蓋率較高,信息質(zhì)量較高,保證了搜索引擎對本領(lǐng)域信息搜集的全面性和實時性。
第二,垂直搜索引擎只涉及特定的領(lǐng)域,用語中出現(xiàn)一詞多義的可能性比通用搜索引擎小很多,通過利用特定領(lǐng)域的專業(yè)詞庫,可以保證信息檢索的準(zhǔn)確性。
第三,網(wǎng)絡(luò)爬蟲在采集特定領(lǐng)域的信息后,需要對該信息進(jìn)行結(jié)構(gòu)化提取,并進(jìn)行深度處理,這樣就保證了網(wǎng)頁信息抽取的準(zhǔn)確性,提高用戶的查詢效率。
二、Lucene.net技術(shù)介紹
Lucene.net是一個由c#開發(fā)的開源全文索引庫,是從apache的lucene項目移植到.Net平臺上的③。Lucene.net的開源代碼分為核心包和用戶接口包,核心包用來實現(xiàn)搜索功能,用戶接口包來用實現(xiàn)高亮顯示等輔助功能。Lucene.net的核心包是由7個子包組成:
(1) 索引管理包(Lucene.Net.Index):實現(xiàn)索引的建立、刪除和文檔中詞的排序;(2) 檢索管理包(Lucene.Net.Search):利用折半查找進(jìn)行檢索,返回結(jié)果;(3) 數(shù)據(jù)存儲管理包(Lucene.Net.Store):實現(xiàn)數(shù)據(jù)存儲等IO操作;(4) 公用算法包(Lucene.Net.Util):封裝了一些常用的函數(shù);(5) 文檔結(jié)構(gòu)包(Lucene.Net.Documents):描述索引存儲中文檔結(jié)構(gòu)的管理和操作;(6) 查詢分析器包(Lucene.Net.QueryParsers):解析查詢串,構(gòu)成查詢對象,通過檢索器對其調(diào)用,返回查詢結(jié)果;(7) 語言分析器包(Lucene.Net.Analysis):用于切分放入索引的文檔和查詢詞,可以通過對Analysis進(jìn)行擴(kuò)展來實現(xiàn)對自然語言的處理。
三、基于Lucene.net的檔案垂直搜索引擎的設(shè)計與實現(xiàn)
1.系統(tǒng)的總體設(shè)計
基于Lucene.net的檔案垂直搜索引擎的設(shè)計與實現(xiàn)是在windows平臺下進(jìn)行的,開發(fā)工具是Visual Studio 2010和SQL Server 2008數(shù)據(jù)庫。垂直搜索引擎主要是由采集模塊、索引模塊和檢索模塊組成。系統(tǒng)的總體設(shè)計方案如圖1,首先,利用面向檔案的主題爬蟲通過互聯(lián)網(wǎng)抓取檔案信息。然后利用分詞工具對抓取的檔案信息進(jìn)行處理,并建立檔案信息對應(yīng)的索引。最后,由用戶輸入的關(guān)鍵詞,根據(jù)已建立的索引進(jìn)行檢索,并返回查詢結(jié)果給用戶。
2.采集模塊
(1)普通的網(wǎng)絡(luò)爬蟲是從一些種子站點出發(fā),下載種子URL的網(wǎng)頁,分析網(wǎng)頁中的超鏈接,并遍歷這些超鏈接,在遍歷鏈接下載網(wǎng)頁的同時,提取網(wǎng)頁中有用的信息存儲在本地。這種爬蟲是不適合檔案領(lǐng)域的,因為檔案領(lǐng)域的爬蟲需要搜索的網(wǎng)絡(luò)范圍有限,它不需要去搜索整個互聯(lián)網(wǎng),只需要搜索一些指定的檔案網(wǎng)站就可以。所以,數(shù)據(jù)采集模塊的核心就是建立一個檔案領(lǐng)域的主題爬蟲。該主題爬蟲的實現(xiàn)方法是:(1)預(yù)先定義好要從哪些檔案類網(wǎng)站進(jìn)行信息采集,將要采集檔案網(wǎng)站的URL地址作為初始地址放入到一個專門隊列URL Queue中,該隊列是用來記錄網(wǎng)絡(luò)爬蟲需要遍歷訪問的所有URL地址,如上圖(2)。
(2)從爬蟲隊列URLQueue中,提取出隊列的第一個URL地址,并下載該URL地址對應(yīng)用的網(wǎng)頁。如上圖中的(2)。
(3)網(wǎng)絡(luò)爬蟲下載的網(wǎng)頁是以文本格式返回的,文本的內(nèi)容是含有html標(biāo)簽的網(wǎng)頁源文件。網(wǎng)頁解析器是將網(wǎng)頁源文件作為字符串,通過定義不同的正則表達(dá)式與該字符串進(jìn)行匹配,并從網(wǎng)頁中提取需要的信息,去掉無關(guān)的信息和html標(biāo)簽。上圖中的(3)就是利用網(wǎng)頁解析器分析下載的網(wǎng)頁,提取網(wǎng)頁中含有的所有超鏈接存入一個用來存儲鏈接地址的列表List中,同時,從網(wǎng)頁中解析出檔案文件的題名、關(guān)鍵詞、內(nèi)容、發(fā)布時間、責(zé)任者等信息。
(4)將從網(wǎng)頁中解析出的檔案題名、關(guān)鍵詞、內(nèi)容、發(fā)布時間、責(zé)任者等信息添加到數(shù)據(jù)采集庫中。在添加數(shù)據(jù)前,需要對每條檔案數(shù)據(jù)進(jìn)行查重,防止相同的數(shù)據(jù)多次插入數(shù)據(jù)庫而影響系統(tǒng)的運行效率。如上圖中的(4)。
(5)對于從網(wǎng)頁中提取出來的所有超鏈接,利用Page Rank算法計算每個超鏈接與檔案主題的相關(guān)度,鏈接的相關(guān)度越高,說明該鏈接指向的網(wǎng)頁越具有較高的價值。通過對每個超鏈接與主題相關(guān)度的計算,排除不相關(guān)的鏈接,將與主題相關(guān)的鏈接加入到網(wǎng)絡(luò)爬蟲要訪問的隊列URL Queue中。
循環(huán)重復(fù)(1)至(5)的步驟,直到爬蟲隊列URLQueue為空的時候,說明網(wǎng)絡(luò)爬蟲已經(jīng)遍歷了所有與檔案主題相關(guān)的網(wǎng)頁,同時,相關(guān)檔案信息也被采集到了數(shù)據(jù)庫中。
3.索引模塊
檔案信息被采集到數(shù)據(jù)庫后,就可以對每條信息建立索引了。建立索引的核心是分詞,分詞的質(zhì)量會直接影響搜索引擎的搜索速度和搜索精度,由于英文單詞是以空格來分開的,所以英文分詞相對比較容易,而中文分詞就復(fù)雜多了,這是因為漢字的排列組合不同,可能使得相同的漢字具有不同的含義,比如“上?!焙汀昂I稀彪m然由相同的漢字組成,但是其排列方式不同就使得兩個詞匯的含義完全不同。由于Lucene.net提供的中文分詞(CJKTokenizer和ChineseTokenizer)功能較弱,所以應(yīng)用基于詞庫的分詞方法MMAnalyzer,其分詞原理是建立專業(yè)詞庫,并依據(jù)詞庫中的詞匯進(jìn)行分詞處理。這樣做雖然延長了分詞處理時間,卻使得分詞效果更加理想。建立索引的過程如下:
(1)提取采集模塊中采集的數(shù)據(jù),返回結(jié)構(gòu)化的數(shù)據(jù)。如上圖中的(6)。
(2)要對一條數(shù)據(jù)進(jìn)行索引,需要將該數(shù)據(jù)轉(zhuǎn)化成Lucene.net中的Document格式。如上圖中的(7)。
(3)利用MMAnalyzer分詞工具對Document數(shù)據(jù)進(jìn)行分詞,過濾停用詞,建立文檔與關(guān)鍵詞的倒排序索引。倒排序索引是相對于正向索引而言的,是指建立關(guān)鍵詞到文檔的映射關(guān)系,通過單詞來索引文檔。最后,建立文檔的索引到索引庫。如上圖中的(8)。
4.檢索模塊
檢索模塊是根據(jù)用戶輸入的關(guān)鍵詞,進(jìn)行分詞處理、過濾處理,并將檢索條件封裝到查詢分析器QueryParse中,通過QueryParse完成檢索,返回查詢結(jié)果,查詢結(jié)果是與關(guān)鍵詞相關(guān)的文檔集合,這時文檔的數(shù)目可能很大,Lucene.net會按照這些文檔與關(guān)鍵詞的相關(guān)度由大到小進(jìn)行排序。,與關(guān)鍵詞相關(guān)度高的文檔排在搜索結(jié)果的前面,所以,在每次檢索的時候,Lucene.net都需要按照關(guān)鍵詞對檢索到的所有文檔進(jìn)行評分,根據(jù)分值來判斷文檔與關(guān)鍵詞的相關(guān)程度。Lucene.net是采用向量空間檢索模型,通過Tf-idf算法來計算關(guān)鍵詞與文檔的相關(guān)度來給每個文檔進(jìn)行評分。檢索模塊的具體實現(xiàn)如下:
(1)用戶輸入關(guān)鍵詞,如上圖中的(9)
(2)分詞工具對關(guān)鍵詞進(jìn)行分詞切分,停用詞過濾等處理,如上圖中的(10)
(3)將分詞后的詞匯組成查詢條件,封裝到查詢分析器中,如上圖中的(11)
(4)查詢分析器通過與索引庫中的索引進(jìn)行匹配,檢索得到與關(guān)鍵詞匹配的所有文檔,如上圖中的(12)
(5)通過索引模塊中建立的文檔倒排序索引,利用Tf-idf算法對所有匹配文檔進(jìn)行文檔評分,如上圖中的(13)
(6)按照匹配結(jié)果中對每個文檔的評分,對匹配結(jié)果進(jìn)行相關(guān)度排序,與關(guān)鍵詞相關(guān)度高的文檔排在匹配結(jié)果的前面,如上圖中的(14)
(7)將經(jīng)過排序的文檔以Hits對象的方式返回用戶,完成檢索任務(wù),如上圖中的(15)
四、結(jié)束語
目前,我國檔案領(lǐng)域的搜索引擎技術(shù)還相對滯后,研究和開發(fā)檔案垂直搜索引擎意義重大。在Lucene.net全文索引庫的基礎(chǔ)上,開發(fā)檔案領(lǐng)域的垂直搜索引擎,有利于快速準(zhǔn)確的定位到具有價值的檔案資源,為檔案用戶提供更有效更專業(yè)的信息服務(wù)。
項目基金:高校青年自然科學(xué)基金(52WU1002)基于.Net的電子檔案管理系統(tǒng)開發(fā)與利用
注釋:
①王振華.檔案領(lǐng)域垂直搜索技術(shù)的研究與實現(xiàn)[D].上海:東華大學(xué),2010
②劉朋.基于lucene的垂直搜索引擎關(guān)鍵技術(shù)的研究應(yīng)用[D].武漢:武漢理工大學(xué),2009
③李占波等.基于DotLucene的垂直搜索引擎的研究[J].微計算機(jī)信息,2007,23
作者單位:天津師范大學(xué)檔案館