魏刃佳,吳振強
WEI Renjia, WU Zhenqiang
陜西師范大學(xué) 計算機科學(xué)學(xué)院,陜西 西安 710062
School of Computer Science, Shaanxi Normal University, Shanxi Xi’an 710062, China
自 1990年蒙特利爾大學(xué)學(xué)生 Alan Emtage發(fā)明的 Archie,到如今 Google、百度等通用搜索引擎的廣泛使用,搜索引擎的價值已越來越高。據(jù)艾瑞資訊統(tǒng)計,2012年第一季度中國搜索引擎市場規(guī)模已達(dá)到54.9億元,同比上升68.2%[1]。但隨著互聯(lián)網(wǎng)上網(wǎng)頁數(shù)量的倍增,通用搜索引擎已不能滿足用戶個性化、專業(yè)化的搜索需求,針對其檢索結(jié)果信息量大、搜索范圍過于寬泛、主題相關(guān)度低、檢索深度不夠、信息時效性差等問題,垂直搜索引擎應(yīng)運而生。
自2000年,國外就開始研究垂直搜索引擎,國內(nèi)對垂直搜索引擎的研究雖起步較晚,但發(fā)展迅速,現(xiàn)有的垂直搜索引擎已涉及圖書搜索、職位搜索等方面,但針對網(wǎng)絡(luò)中海量的教育資源,學(xué)習(xí)者仍需花費大量的時間在多個網(wǎng)站中搜索所需信息,搜索效率較低。為此,本文順應(yīng)教育信息化發(fā)展的要求[2],結(jié)合我國教育資源利用率低的問題,將垂直搜索引擎與教育資源相結(jié)合,以教育視頻資源為例,通過對開源軟件Heritrix和Lucene進(jìn)行擴展以及對精品課程資源網(wǎng)的分析[3],提取視頻資源名、資源描述以及資源鏈接,實現(xiàn)了教育視頻資源的整合及搜索,使得學(xué)習(xí)者可以通過視頻資源搜索引擎更快地獲取所需信息,并將其運用在移動校園系統(tǒng)中,提高教育視頻資源利用率。而且,針對Heritrix與Lucene串行組合方案難以實現(xiàn)信息抓取、分析過程與索引過程同時進(jìn)行的問題,對實現(xiàn)流程進(jìn)行優(yōu)化,使網(wǎng)頁抓取、網(wǎng)頁內(nèi)容分析篩選和建立索引三個過程同時進(jìn)行,降低系統(tǒng)IO開銷和磁盤空間占用率。
垂直搜索引擎[4]是針對某個特定領(lǐng)域的專業(yè)搜索引擎,是搜索引擎的細(xì)分和延伸,是對網(wǎng)頁庫中的某類專門的信息進(jìn)行一次整合,定向分字段抽取出需要的數(shù)據(jù)進(jìn)行處理后再以某種形式返回給用戶,向用戶提供個性化、專業(yè)化的搜索服務(wù),有效地解決了通用搜索引擎存在的檢索結(jié)果信息量大、主題相關(guān)度低、檢索深度不夠、信息時效性差等弊端。垂直搜索引擎與通用搜索引擎的最大區(qū)別在于對網(wǎng)頁信息進(jìn)行結(jié)構(gòu)化信息抽取,即將網(wǎng)頁的非結(jié)構(gòu)化數(shù)據(jù)提取成特定的結(jié)構(gòu)化信息數(shù)據(jù),將結(jié)構(gòu)化的數(shù)據(jù)作為最小單位。在我國,大家所熟知的垂直搜索引擎主要有針對 IT領(lǐng)域的賽迪 IT羅盤(http://itsearch.ccidnet.com),以酷訊為代表的生活搜索引擎,以去哪兒網(wǎng)為代表的旅游搜索引擎等。
我國自從20世紀(jì)80年代大力發(fā)展教育信息化建設(shè)以來,已建立了基礎(chǔ)教育資源庫、高等教育精品課程資源庫等一批優(yōu)秀的資源共享系統(tǒng)。但由于經(jīng)濟(jì)狀況、地理位置以及硬件設(shè)施的限制,這些共享資源并沒有得到很好地應(yīng)用,造成了教育資源的浪費。而且,面對海量的教學(xué)資源,學(xué)習(xí)者需要花費大量的時間和精力從各個網(wǎng)站上篩選出所需資源,其資源搜索模式如圖1所示,學(xué)習(xí)者在搜索資源時首先需要瀏覽每個網(wǎng)站的信息,然后進(jìn)行篩選。由于信息量大而且每個網(wǎng)站都存在很多冗余信息,使得最終搜索到的資源質(zhì)量也很難保證。如何使學(xué)習(xí)者在短時間內(nèi)快速瀏覽相關(guān)信息并且準(zhǔn)確定位所需資源已經(jīng)成為教育資源搜索引擎的研究熱點之一。
圖1 資源搜索模式
目前我國已存在一些面向教育資源的搜索引擎,比如中國第一教育資源網(wǎng)站Edugo(http://www.edugo.cn/),華南理工大學(xué)的木棉搜索引擎(http://search.scut.edu.cn/)。但這些搜索引擎存在搜索內(nèi)容準(zhǔn)確性不高,難以滿足用戶需求等不足[5]。
移動校園系統(tǒng)主要是為了滿足目前人們對移動學(xué)習(xí)日益增長的需求而設(shè)計開發(fā)的一個學(xué)習(xí)資源網(wǎng)站系統(tǒng)。它使得學(xué)習(xí)者能夠利用各種瀏覽器或者終端設(shè)備在任何時間任何地點簡單快捷地獲得學(xué)習(xí)資源。
為了提高學(xué)習(xí)者的搜索效率,本文利用垂直搜索思想,以教育視頻資源為例,設(shè)計并實現(xiàn)了面向教育視頻資源的垂直搜索引擎,對教育視頻資源進(jìn)行整合,學(xué)習(xí)者只需通過與垂直搜索引擎進(jìn)行交互,就能實現(xiàn)檢索需求,新的資源搜索模式如圖2所示,搜索引擎對每個網(wǎng)站的資源進(jìn)行整理,將與學(xué)習(xí)者搜索需求相關(guān)的鏈接呈現(xiàn)給學(xué)習(xí)者,眾多的網(wǎng)站相對于學(xué)習(xí)者來說是透明的,學(xué)習(xí)者只需要關(guān)注搜索引擎提供的資源信息即可,極大地提高了學(xué)習(xí)者的搜索效率。
圖2 新的資源搜索模式
開源網(wǎng)絡(luò)爬蟲框架 Heritrix[6,7,8]將網(wǎng)頁抓取過程作為一個獨立的模塊,其抓取過程為首先從待抓取的URI中選擇一個,然后根據(jù)URI獲得網(wǎng)頁信息,對網(wǎng)頁信息分析歸檔后寫入磁盤鏡像目錄,最后再從分析的網(wǎng)頁信息中選擇符合要求的URI加入到URI等待隊列中,遞歸執(zhí)行上述操作,直到等待隊列中所有URI完成信息的處理。在串行組合情況下,Heritrix完成全部抓取工作后才會對網(wǎng)頁內(nèi)容進(jìn)行分析,待網(wǎng)頁抓取和網(wǎng)頁內(nèi)容分析兩個過程均完成之后再調(diào)用全文檢索引擎框架 Lucene[8]的索引建立功能對所有文檔進(jìn)行索引工作,串行組合流程如圖3所示。這樣將三個過程完全獨立的設(shè)計方案雖然增強了各部分的獨立性和靈活性,但是文檔的IO讀寫會消耗大量的資源和時間,特別是在抓取海量數(shù)據(jù)時,文本文檔的創(chuàng)建、寫入和保存占據(jù)了大量的處理時間。
圖3 串行組合方案流程圖
針對Heritrix抓取結(jié)束后再利用Lucene建立索引的串行組合方案存在的問題,本文提出一種流程優(yōu)化組合方案,將網(wǎng)頁抓取、網(wǎng)頁內(nèi)容分析篩選、建立索引三個過程同時進(jìn)行,實現(xiàn)Heritrix和Lucene的緊耦合,如圖4虛線框中所示,即對一個網(wǎng)頁完成抓取后,立即對其內(nèi)容進(jìn)行提取和篩選,然后將其加入到索引中,最后將建立好的索引文件寫入磁盤。此方案降低了系統(tǒng)的IO開銷和磁盤空間的占用率。因為 Lucene建立索引的過程在內(nèi)存中進(jìn)行,最后僅需要將索引文件寫入磁盤中,這樣IO資源的開銷幾乎為零。在通常情況下,能達(dá)到較好的抓取和索引效果。緊耦合組合方案流程如圖4所示:
圖4 緊耦合組合方案流程圖
3.2.1 判斷網(wǎng)頁是否需要保存
由于本搜索引擎只需要保存含有視頻播放的網(wǎng)頁,因此通過對精品課程網(wǎng)的網(wǎng)頁進(jìn)行分析可知,精品課程網(wǎng)站中有兩種網(wǎng)頁含有視頻,一種是資源網(wǎng)頁,網(wǎng)址的形式http://resource.jingpinke.com/details?XXXX,另一種是視頻網(wǎng)頁,網(wǎng)址形式為http://video.jingpinke.com/details? XXXX,問號后面的部分以參數(shù)形式代表了這個網(wǎng)頁的內(nèi)容等信息。此處,采用正則表達(dá)式表示以上兩種形式的網(wǎng)址:
3.2.2 網(wǎng)頁內(nèi)容提取
網(wǎng)頁中包含許多與主要內(nèi)容無關(guān)的文本、鏈接、圖片等噪聲信息。在進(jìn)行檢索時,這些噪聲信息會嚴(yán)重影響檢索結(jié)果的準(zhǔn)確性和檢索速度,而且會使索引結(jié)構(gòu)的規(guī)模變大。因此,本文通過HTML Parser[9]提取建立索引時所需的信息,舍棄噪聲區(qū)域,提高搜索的準(zhǔn)確性。需要提取的內(nèi)容項目如表1所示:
表1 提取的網(wǎng)頁項目
(1) 視頻標(biāo)題及描述信息的提取
① 標(biāo)簽名為meta;
② 標(biāo)簽含有name屬性;
③ 屬性值為keywords或description;
前兩個條件可以通過構(gòu)造Node Filter實現(xiàn):Node Filter filter=new And Filter(new Node Class Filter(Meta Tag.class),new Has Attribute Filter("name"));
在篩選出符合前兩條規(guī)則的節(jié)點后,可以使用循環(huán),通過get Attribute()方法判斷屬性值是否匹配,如果匹配的話,則將標(biāo)簽的content屬性的值取出,從而得到此網(wǎng)頁的關(guān)鍵字。
(2) 視頻播放鏈接的提取
網(wǎng)頁中 Flash視頻的播放通常用
①
② 子標(biāo)簽的 name參數(shù)值為flashvars的標(biāo)簽,其value屬性的值表示播放視頻時需要給播放器的必要參數(shù);
HTTP請求通常通過在 URL后面加問號的方式表示提交的請求的參數(shù),對于flash視頻播放器也不例外。因此可以通過“播放器地址+‘?’+播放器參數(shù)”的形式通過HTTP訪問來播放視頻。
這樣獲得的鏈接就可以使用一個
Lucene[8]建立索引可分為三個步驟:將數(shù)據(jù)轉(zhuǎn)化為文本,分析,保存至索引。根據(jù)3.1的設(shè)計思想,本文將索引的建立與頁面抓取分析同時進(jìn)行,首先利用Heritrix對抓取的鏈接進(jìn)行分析篩選,然后利用 Lucene建立索引,最后將索引文件存入外存,降低IO讀寫開銷。
Lucene使用IndexWriter類進(jìn)行索引的寫操作,對于每次抓取到的頁面,使用IndexWriter對象加入索引,待全部抓取完成之后,關(guān)閉 IndexWriter對象。通過分析可知,IndexWriterProcessor繼承的 Processor類中有兩個未實現(xiàn)功能的方法,因此,可以通過重寫這兩個方法來實現(xiàn) IndexWriter的初始化和關(guān)閉操作。
Heritrix每次抓取到一個頁面之后,都會調(diào)用IndexWriterProcessor的innerProcess()方法,在這個方法中實例化一個 Lucene的Document對象,通過 WriteFilterJPK類的getAttribute()方法獲得通過頁面解析得到的視頻內(nèi)容描述關(guān)鍵字、播放鏈接信息,將其加入到 Document對象中,然后使用IndexWriter執(zhí)行addDoc()方法,將這個包含了資源信息的文檔對象加入到索引中去。
本文采用的實驗環(huán)境是WindowsXP操作系統(tǒng),1G內(nèi)存,Intel(R) Core(TM)2 CPU 6320 @1.86GHz。設(shè)置線程數(shù)為20,使原始的Heritrix與改進(jìn)后的Heritrix在相同的時間內(nèi)分別在兩臺配置相同的計算機上同時運行。圖 5為原始 Heritrix與改進(jìn)后的Heritrix在平均抓取速度方面的對比。
圖5 平均抓取速度對比圖
從圖中可以看出,在Heritrix運行過程中嵌入索引建立操作,對運行效率影響不大,能夠滿足實際需要,達(dá)到了預(yù)期要求。
Heritrix運行結(jié)束以后,在磁盤上生成索引文件,如圖6所示,其中segments_*文件描述一組索引的參數(shù),segment.gen存儲索引創(chuàng)建參數(shù),fdx是文檔域值索引文件,fdt是文檔域值存儲文件,fnm是索引域描述文件,tis文件存儲每個索引在文檔中的分布信息,tii文件是tis文件的索引和精簡,frq和prx文件均為tis文件的擴展和延伸。然后利用 Lucene建立的索引文件進(jìn)行檢索,得到鏈接地址,即可播放視頻。如圖7所示:
圖6 索引文件
圖7 視頻播放效果
由文獻(xiàn)[8,10]可知,Heritrix抓取結(jié)果的處理過程由 Writer處理器鏈實現(xiàn),所有Writer類均繼承自 Processor這個抽象類。Processor這個類中最主要的執(zhí)行處理任務(wù)的方法名稱為 innerProcess(),因此論文在IndexWriterProcessor類中重寫該方法實現(xiàn)提取視頻內(nèi)容、播放鏈接和建立索引的功能。處理過程的算法描述如下:該算法對待抓取的URI隊列uriQueue進(jìn)行處理,當(dāng)隊列不為空時,彈出隊首URI并對其對應(yīng)的網(wǎng)頁文件進(jìn)行分析、建立索引。
本文針對Heritrix與Lucene串行組合方案存在的問題,通過改進(jìn)Heritrix的抓取過程,使網(wǎng)頁抓取、網(wǎng)頁內(nèi)容分析和建立索引三個過程同時進(jìn)行,實現(xiàn)Heritrix與Lucene的緊耦合,降低了系統(tǒng)運行的IO開銷和磁盤空間的占用率,并且針對我國現(xiàn)存的教育資源利用率較低的問題,設(shè)計并實現(xiàn)了面向教育視頻資源的垂直搜索引擎,達(dá)到了預(yù)期的效果。下一步工作將研究網(wǎng)絡(luò)爬蟲的通用性問題。
[1]劉大龍.2012Q1中國搜索引擎市場規(guī)模54.9億市場集中度進(jìn)一步提高[EB/OL].http://search.iresearch.cn/14/20120426/170800.sht ml.2012-4-26/ 2012-6-20.
[2]中華人民共和國教育部.《教育信息化十年發(fā)展規(guī)劃(2011-2020年)征求意見稿》.2012-01-29.
[3]李開燦,程平,張祖?zhèn)?關(guān)于精品課程網(wǎng)絡(luò)資源利用率的統(tǒng)計分析[J].湖北師范學(xué)院學(xué)報(自然科學(xué)版),2010,30(3):11-14.
[4]林偉.垂直搜索引擎關(guān)鍵技術(shù)的研究與實現(xiàn)[D].廣州:華南理工大學(xué),2011.
[5]邵蕾.基于Lucene的教學(xué)資源垂直搜索引擎的研究與實現(xiàn)[D].北京:北京郵電大學(xué),2012.
[6]Heritrix官方網(wǎng)站.http://webarchive.jira.com/wiki/display/Heritrix/Heritrix.
[7]郭艷芬.利用Heritrix構(gòu)建特定站點爬蟲[EB/OL].http://www.ibm.com/devel operworks/cn/ opensource/ os-cn-heritrix/#major2,2010-11-29/2012-3-10.
[8]邱哲,符濤濤,王學(xué)松.開發(fā)自己的搜索引擎-Lucene+Heritrix[M].北京:人民郵電出版社,2010.
[9]李亮.基于Lucene和Heritrix的職位垂直搜索引擎的設(shè)計與實現(xiàn)[D].北京:中國地質(zhì)大學(xué),2010.
[10]Heritrix源碼分析[EB/OL].http://www.docin.com/p-15016 7879.html , 2011-3-16/2012-3-1.