靳晟+李永可+李悅+陳燕紅
摘要:垂直信息檢索是針對(duì)某一行業(yè)的專業(yè)檢索技術(shù),為用戶提供高相關(guān)度信息檢索服務(wù)。本文通過(guò)對(duì)分布式系統(tǒng)hadoop、搜索引擎、分布式數(shù)據(jù)庫(kù)、倒排索引等技術(shù)的研究,開(kāi)發(fā)設(shè)計(jì)了分布式農(nóng)業(yè)信息檢索系統(tǒng),為用戶提供專業(yè)的農(nóng)業(yè)信息檢索服務(wù)。系統(tǒng)主要包括分布式平臺(tái)模塊,分布式網(wǎng)絡(luò)采集器模塊,分布式檢索系統(tǒng)等模塊。
關(guān)鍵詞:分布式平臺(tái);網(wǎng)絡(luò)爬蟲(chóng);分布式檢索
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)01-0237-02
隨著信息技術(shù)的飛速發(fā)展,互聯(lián)網(wǎng)數(shù)據(jù)資源呈爆炸式增長(zhǎng),互聯(lián)網(wǎng)數(shù)據(jù)的快速增長(zhǎng)雖然滿足了我們?nèi)找嬖鲩L(zhǎng)的信息需求,但對(duì)信息檢索技術(shù)也提出了挑戰(zhàn),如何在大規(guī)模的數(shù)據(jù)集中快速檢索出用戶需要的有價(jià)值信息成為當(dāng)前研究的熱點(diǎn)。全文檢索針對(duì)范圍廣,返回檢索結(jié)果往往涉及各個(gè)方面知識(shí),而用戶真正關(guān)心領(lǐng)域的知識(shí)可能不多或者排在了檢索結(jié)果后面,這給用戶從檢索結(jié)果中挑選自己需要的結(jié)果帶來(lái)了一定的困難,而垂直檢索只是針對(duì)某一領(lǐng)域的專業(yè)檢索,檢索范圍只針對(duì)該領(lǐng)域,返回結(jié)果不多,但都是用戶關(guān)心領(lǐng)域的結(jié)果,和傳統(tǒng)全文搜索引擎相比,垂直搜索引擎更能滿足用戶信息檢索需求。
1 系統(tǒng)總體設(shè)計(jì)及結(jié)構(gòu)
分布式農(nóng)業(yè)搜索引擎首先要解決單機(jī)環(huán)境下數(shù)據(jù)采集效率低、存儲(chǔ)難以擴(kuò)充等問(wèn)題,分步式系統(tǒng)是解決這些問(wèn)題的完美方案,本系統(tǒng)采用Hadoop的HDFS作為分布式搜索引擎底層文件系統(tǒng),解決了分布式存儲(chǔ)和檢索問(wèn)題,使用nutch作為數(shù)據(jù)采集器,負(fù)責(zé)網(wǎng)絡(luò)數(shù)據(jù)的采集,使用Solr作為檢索器,本系統(tǒng)主要包括信息采集模塊、倒排索引模塊、信息檢索模塊、HDFS系統(tǒng)等四大部分組成,系統(tǒng)結(jié)構(gòu)圖如圖1。
2 分布式農(nóng)業(yè)信息采集子系統(tǒng)
分布式農(nóng)業(yè)信息采集子系統(tǒng)主要負(fù)責(zé)從互聯(lián)網(wǎng)抓取指定站點(diǎn)的農(nóng)業(yè)信息,該模塊維護(hù)有一張農(nóng)業(yè)種子網(wǎng)站列表,目前在該列表中有3000個(gè)農(nóng)業(yè)網(wǎng)站,該模塊采用分布式采集技術(shù),底層分布式系統(tǒng)采用Hadoop2.4版本,網(wǎng)絡(luò)爬蟲(chóng)使用nutch2.3,分布式數(shù)據(jù)庫(kù)使用HBase0.94,采用分布式架構(gòu)不但大大提高了數(shù)據(jù)采集效率,而且使系統(tǒng)具有高伸縮性,當(dāng)數(shù)據(jù)采集節(jié)點(diǎn)不夠時(shí)可方便向集群中添加新的采集節(jié)點(diǎn)。數(shù)據(jù)采集模塊是搜索引擎設(shè)計(jì)的基礎(chǔ),該模塊為搜索引擎提供源源不斷的數(shù)據(jù)源,分布式數(shù)據(jù)采集系統(tǒng)功能模塊圖如圖2所示。
網(wǎng)絡(luò)爬蟲(chóng)從種子列表開(kāi)始,逐級(jí)解析網(wǎng)頁(yè)中出現(xiàn)的url鏈接,本系統(tǒng)采取廣度優(yōu)先算法進(jìn)行網(wǎng)頁(yè)抓取,直到網(wǎng)絡(luò)爬蟲(chóng)采集到系統(tǒng)設(shè)定級(jí)數(shù)時(shí)才停止采集,數(shù)據(jù)采集采用增量更新原則,確保采集過(guò)的網(wǎng)頁(yè)沒(méi)有發(fā)生變化時(shí)不再重新采集,提高采集效率降低磁盤冗余。數(shù)據(jù)采集流程如圖3所示。
采集模塊從URL種子列表開(kāi)始,首先讀取完整的的url地址信息,檢驗(yàn)url有效性,刪除無(wú)效url地址,將有效url地址注入CrawDb庫(kù)中,注入CrawDb庫(kù)后,Generate模塊從該庫(kù)中提取出所有url并按指定規(guī)則進(jìn)行過(guò)濾,之后生成FetchList待采集列表,并將此列表寫進(jìn)Segments目錄中;根據(jù)Fetchlist列表,F(xiàn)etch模塊按廣度優(yōu)先算法依次抓取網(wǎng)頁(yè)信息并保存在本地的crawl-fetch目錄下;根據(jù)采集到的網(wǎng)頁(yè)數(shù)據(jù),Parse模塊對(duì)數(shù)據(jù)進(jìn)行解析并將解析后的完整數(shù)據(jù)保存至crawl-parse目錄下;根據(jù)Fetch模塊和Parse模塊采集到的數(shù)據(jù)Updata模塊對(duì)已采集到的數(shù)據(jù)進(jìn)行增量更新。
3 分布式索引子系統(tǒng)
分布式索引模塊將分布式采集模塊采集到的數(shù)據(jù)建立倒排索引,為分布式檢索系統(tǒng)提供檢索服務(wù)支撐,分布式索引系統(tǒng)使用lucene4.1設(shè)計(jì)實(shí)現(xiàn),分布式檢索系統(tǒng)結(jié)構(gòu)如圖4所示。
索引模塊將對(duì)采集模塊采集到的數(shù)據(jù)進(jìn)行文檔解析、語(yǔ)義分析、詞法分析、分詞、相關(guān)度評(píng)分等操作,經(jīng)這些處理后最終建立倒排索引文件。任務(wù)調(diào)度器JobTracher會(huì)協(xié)調(diào)各Slave節(jié)點(diǎn)采用MapReduce算法建立倒排索引文件,并在本地HDFS服務(wù)器進(jìn)行存儲(chǔ),為檢索系統(tǒng)提供分布式檢索支撐。
4 分布式檢索模塊
分布式檢索模塊為用戶提供分布式檢索服務(wù),分布式檢索模塊依據(jù)MapReduce算法設(shè)計(jì),對(duì)Lucene4.10和solr4.10進(jìn)行二次開(kāi)發(fā)設(shè)計(jì)用戶檢索接口,為用戶提供檢索界面和檢索服務(wù),分布檢索模塊系統(tǒng)結(jié)構(gòu)如圖5所示。
分布式檢索服務(wù)器根據(jù)IPC(Inter-Process Communication)通信規(guī)則向分布式系統(tǒng)中各子節(jié)點(diǎn)分發(fā)檢索請(qǐng)求,各檢索子節(jié)點(diǎn)根據(jù)檢索請(qǐng)求從本地索引中檢索并將檢索結(jié)果反饋給檢索服務(wù)器,檢索服務(wù)器將反饋會(huì)的結(jié)果進(jìn)行處理后反饋給用戶,分布式檢索對(duì)檢索語(yǔ)句進(jìn)行詞法分析、語(yǔ)法分析、分詞、去停用詞等處理,然后從倒排索引中進(jìn)行關(guān)鍵詞檢索,然后對(duì)檢索結(jié)果進(jìn)行相關(guān)性排序并將關(guān)鍵詞進(jìn)行高亮顯示,最后將排序后的結(jié)果反饋給檢索用戶。
5 總結(jié)
通過(guò)對(duì)分布式系統(tǒng)、搜索引擎技術(shù)、倒排索引技術(shù)、MapReduce技術(shù)的深入研究,開(kāi)發(fā)設(shè)計(jì)了基于分布式平臺(tái)的農(nóng)業(yè)垂直搜索引擎,系統(tǒng)具有高擴(kuò)展性和穩(wěn)定性,為用戶提供了高相關(guān)度的信息檢索服務(wù),滿足了用戶的基本信息檢索需求,后期系統(tǒng)將進(jìn)行數(shù)據(jù)清洗技術(shù)的研究,對(duì)采集到的數(shù)據(jù)進(jìn)行相識(shí)度分析,過(guò)濾重復(fù)頁(yè)面,為用戶提供更加友好、高質(zhì)量的信息檢索服務(wù)。
參考文獻(xiàn):
[1] 崔杰,李陶深,蘭紅星. 基于Hadoop的海量數(shù)據(jù)存儲(chǔ)平臺(tái)設(shè)計(jì)與開(kāi)發(fā)[J]. 計(jì)算機(jī)研究與發(fā)展,2012,49(s1):12-18.
[2] 許丞,劉洪,譚良. Hadoop云平臺(tái)的一種新的任務(wù)調(diào)度和監(jiān)控機(jī)制[J]. 計(jì)算機(jī)科學(xué),2013,40(1):112-117.
[3] 朱珠. 基于Hadoop的海量數(shù)據(jù)處理模型研究和應(yīng)用[M].北京:北京郵電大學(xué),2008.
[4] 鄭曉薇,項(xiàng)明. 基于節(jié)點(diǎn)能力的Hadoop集群任務(wù)自適應(yīng)調(diào)度方法[J]. 計(jì)算機(jī)研究與發(fā)展,2014(3):618-626.
[5] 詹恒飛,楊岳湘. Nutch分布式網(wǎng)絡(luò)爬蟲(chóng)研究與優(yōu)化[J]. 計(jì)算機(jī)科學(xué)與探索,2011,5(1):68-74.