摘 要面對(duì)互聯(lián)網(wǎng)浩如煙海的信息,如何從中挑選出合理、排序公平的搜索結(jié)果是當(dāng)今的一大難題。Nutch擁有開(kāi)放的結(jié)果排序算法,且具有一個(gè)大型分布式搜索引擎所需的基本功能,研究Nutch對(duì)于我們更加深入的了解搜索引擎具有突出的作用。
【關(guān)鍵詞】搜索引擎 Nutch
二十一世紀(jì)是互聯(lián)網(wǎng)的時(shí)代,隨著科技的發(fā)展,互聯(lián)網(wǎng)已經(jīng)深入到普羅大眾的日常生活中。然而面對(duì)如此巨量的信息,我們卻顯得不知所措。Nutch的誕生為我們從多如牛毛的信息中提取出相對(duì)公平客觀的信息提供了巨大的幫助。Nutch擁有搜索引擎的一些基本功能,并擁有自身特別的對(duì)網(wǎng)頁(yè)價(jià)值評(píng)定的算法,努力為使用者提供最合理的搜索結(jié)果。
1 Nutch簡(jiǎn)介
Nutch是一個(gè)開(kāi)源的、java實(shí)現(xiàn)的搜索引擎。雖然市場(chǎng)上已經(jīng)有比較成熟的幾款searcher engine,但并不妨礙我們對(duì)Nutch的研究,對(duì)Nutch的學(xué)習(xí)主要是因?yàn)椋?/p>
1.1 透明度
Nutch是一款開(kāi)源軟件,因此任何開(kāi)發(fā)者都可以看到它內(nèi)部的排序算法。因此Nutch比較適合對(duì)結(jié)果的公平性相對(duì)較高信息的查詢。
1.2 可以加深對(duì)搜索引擎的深入了解
Nutch的研究可以讓我們更好的了解到一個(gè)大型分布式的搜索引擎是如何工作的很有意義。
2 Nutch的系統(tǒng)結(jié)構(gòu)和工作流程
Nutch的基本組成主要包括爬蟲(chóng),索引,搜索三部分。其體系結(jié)構(gòu)如圖1所示。
Nutch由Web-DB、LinkDB、Segements和Index的數(shù)據(jù)結(jié)構(gòu)提供數(shù)據(jù)支持,Nutch整個(gè)的工作流程可以分為如下幾步:
(1)建立種子URL;
(2)將種子URL加入到crawlDB數(shù)據(jù)庫(kù),整個(gè)網(wǎng)頁(yè)抓取過(guò)程將會(huì)從URL開(kāi)始抓取,一直到指定的抓取層數(shù);
(3)創(chuàng)建抓取列表;
(4)執(zhí)行抓取,得到網(wǎng)頁(yè)內(nèi)容信息;
(5)更新數(shù)據(jù)庫(kù);
(6)重復(fù)進(jìn)行3~5的步驟,直到預(yù)先設(shè)定的抓取深度。
(7)對(duì)于每一個(gè)Segement生成一個(gè)索引;
(8)從這些索引中刪除冗余的網(wǎng)頁(yè)和URL;
(9)將小索引合并成大的索引;
(10)用戶通過(guò)用戶端口進(jìn)行查詢操作;
(11)將用戶查詢轉(zhuǎn)化為L(zhǎng)ucene查詢;
(12)返回結(jié)果。
3 Nutch的技術(shù)分析
Nutch主要由Crawler及Searcher組成。Crawler是從互聯(lián)網(wǎng)上抓取到網(wǎng)頁(yè),并且給每個(gè)網(wǎng)頁(yè)建立一個(gè)特定的索引。Searcher則是利用crawler建立的索引根據(jù)用戶查找的關(guān)鍵詞來(lái)查找出結(jié)果。Crawler與Searcher的接口是索引。
3.1 Crawler的研究
Crawler的重點(diǎn)是其運(yùn)行過(guò)程和包含的data file的格式和含義。data file主要包括三類,web database,Segement以及index。Crawler詳細(xì)工作流程是:在創(chuàng)建一個(gè)WebDB之后,“產(chǎn)生/抓取/更新”循環(huán)根據(jù)一些種子URLs開(kāi)始啟動(dòng)。當(dāng)這個(gè)循環(huán)徹底結(jié)束,Crawler根據(jù)抓取中生成的Segement創(chuàng)建索引。在進(jìn)行URLs清除之前,每個(gè)Segement的索引都是獨(dú)立的。最終,各個(gè)獨(dú)立的Segement索引被合并為一個(gè)最終的索引index。
3.2 Nutch的網(wǎng)頁(yè)去噪
網(wǎng)頁(yè)去噪主要是去除掉廣告標(biāo)簽等無(wú)用的信息,盡量獲取到網(wǎng)頁(yè)的實(shí)質(zhì)性內(nèi)容,對(duì)于一個(gè)網(wǎng)頁(yè),去噪過(guò)程包括以下步驟:
(1)在
(2)利用HtmlParse去除掉各種腳本、圖片等信息,得到只有鏈接和文本的字符串。
(3)利用網(wǎng)頁(yè)的一般性特征去除掉導(dǎo)航欄文字,去除所有以“<”和“>”標(biāo)識(shí)的鏈接文字。
(4)去除版權(quán)聲明信息。
經(jīng)過(guò)上述四種方法,基本上能夠去除掉廣告、導(dǎo)航信息、客戶端代碼等相對(duì)沒(méi)有value的信息,對(duì)于獲得比較好的網(wǎng)頁(yè)內(nèi)容具有極大的幫助。
4 Nutch的對(duì)比分析
通過(guò)搜索,我們將Nutch與時(shí)下比較好的開(kāi)源搜索引擎進(jìn)行對(duì)比測(cè)評(píng),分別有Heritris、WCT、以及Web-Harvest。Nutch提供網(wǎng)頁(yè)的抓取,分析了解網(wǎng)頁(yè)、建立連接數(shù)據(jù)庫(kù)、對(duì)網(wǎng)頁(yè)進(jìn)行評(píng)分、建立Lucene索引和提供檢索界面登陸等。Heritrix提供了豐富的抓取設(shè)置選項(xiàng),完善的、精確的站點(diǎn)內(nèi)容深度復(fù)制。WCT能獲得目標(biāo)站點(diǎn)的深度采集授權(quán)、采集調(diào)度、資源描述等信息。Web-Harvest能以用戶所指定的網(wǎng)頁(yè)為抓取起始頁(yè),通過(guò)規(guī)則表達(dá)語(yǔ)法進(jìn)行多層抓取,形成XML文檔。
從圖2可以看出,Nutch具有很強(qiáng)的對(duì)比優(yōu)勢(shì)。Nutch在抓取過(guò)程中,對(duì)于需要存儲(chǔ)空間較大,但又value不高的信息就有較高的優(yōu)勢(shì)。
5 Nutch待改進(jìn)的方面
經(jīng)過(guò)團(tuán)隊(duì)的不斷研究與測(cè)試,發(fā)現(xiàn)Nutch主要存在以下問(wèn)題,影響了其性能的進(jìn)一步提高:
5.1 等待時(shí)間僵化
Nutch抓取網(wǎng)頁(yè)上的內(nèi)容主要是利用protocol-http實(shí)現(xiàn)的。N每下載一個(gè)頁(yè)面等待時(shí)間都是Nutch-default.xml配置文件預(yù)設(shè)的固定值:http.max.delays和fetcher.server.delay,這在不同的網(wǎng)絡(luò)情況下會(huì)造成時(shí)間的巨大浪費(fèi)。
5.2 抓取失敗的鏈接網(wǎng)站管理不夠
Nutch對(duì)于抓取失敗的網(wǎng)頁(yè)鏈接沒(méi)有詳細(xì)的監(jiān)管。可能某個(gè)網(wǎng)站關(guān)閉了,或者更換域名,但依然在其他的站點(diǎn)存在鏈接,如果被Nutch發(fā)現(xiàn)而且還一個(gè)一個(gè)去實(shí)驗(yàn),將會(huì)浪費(fèi)大量的時(shí)間和網(wǎng)絡(luò)資源。
6 結(jié)束語(yǔ)
Nutch由于透明的查詢算法,其搜索結(jié)果對(duì)用戶而言是比較公平的。然而Nutch離谷歌和百度等這些商業(yè)引擎依舊存在較大的差距,希望開(kāi)發(fā)者們一起為Nutch的發(fā)展與完善貢獻(xiàn)出自己的一份力量。
作者簡(jiǎn)介
杜旭升(1995-),男,甘肅省慶陽(yáng)市人。現(xiàn)為新疆大學(xué)大學(xué)本科在讀學(xué)生。軟件工程專業(yè)。
作者單位
新疆大學(xué) 新疆維吾爾自治區(qū)烏魯木齊市 830000