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