Nutch搜尋引擎系統架構

2021-05-27 14:34:42 字數 2015 閱讀 6250

下面分析一下nutch搜尋引擎系統的特點。

一、系統架構

總體上nutch可以分為2個部分:抓取部分和搜尋部分。抓取程式抓取頁面並把抓取回來的資料做成反向索引,搜尋程式則對反向索引搜尋回答使用者的請求。抓 取程式和搜尋程式的介面是索引,兩者都使用索引中的字段。抓取程式和搜尋程式可以分別位於不同的機器上。下面詳細介紹一下抓取部分。

抓取部分:

抓取程式是被nutch的抓取工具驅動的。這是一組工具,用來建立和維護幾個不同的資料結構: web database, a set of segments, and the index。下面逐個解釋這三個不同的資料結構:

2、segment 。這是網頁的集合,並且它被索引。segment的fetchlist 是抓取程式使用的url列表,它是從 webdb中生成的。fetcher 的輸出資料是從 fetchlist 中抓取的網頁。fetcher的輸出資料先被反向索引,然後索引後的結果被儲存在segment 中。 segment的生命週期是有限制的,當下一輪抓取開始後它就沒有用了。預設的 重新抓取間隔是30天。因此刪除超過這個時間期限的segment是可以的。而且也可以節省不少磁碟空間。segment 的命名是日期加時間,因此很直觀的可以看出他們的存活週期。

3、the index。索引庫是反向索引所有系統中被抓取的頁面,它並不直接從頁面反向索引產生,而是合併很多小的segment的索引產生的。nutch 使用 lucene 來建立索引,因此所有lucene相關的工具 api 都用來建立索引庫。需要說明的是lucene的segment 的概念和nutch的segment概念是完全不同的,不要混淆。簡單來說 lucene 的 segment 是 lucene 索引庫的一部分,而nutch 的segment是webdb中被抓取和索引的一部分。

抓取過程詳解:

一般來說同一網域名稱下的 url 鏈結會被合成到同乙個 fetchlist。這樣做的考慮是:當同時使用多個工具抓取的時候,不會產生重複抓取的現象。nutch 遵循 robots exclusion protocol, 可以用robots.txt 定義保護私有網頁資料不被抓去。

上面這個抓取工具的組合是nutch的最外層的,也可以直接使用更底層的工具,自己組合這些底層工具的執行順序達到同樣的結果。這是nutch吸引人的地方。下面把上述過程分別詳述一下,括號內就是底層工具的名字:

1、建立乙個新的webdb (admin db -create)。

2、把開始抓取的跟url 放入webdb (inject)。

3、從webdb的新 segment 中生成 fetchlist (generate)。

4、根據 fetchlist 列表抓取網頁的內容 (fetch)。

5、根據抓取回來的網頁鏈結url更新 webdb (updatedb)。

6、重複上面3-5個步驟直到到達指定的抓取層數。

7、用計算出來的網頁url權重 scores 更新 segments (updatesegs)。

8、對抓取回來的網頁建立索引(index)。

9、在索引中消除重複的內容和重複的url (dedup)。

10、合併多個索引到乙個大索引,為搜尋提供索引庫(merge)。

在建立了乙個新的webdb後,抓取迴圈 generate/fetch/update 就根據最先第二步指定的根 url 在一定週期下自動迴圈了。當抓取迴圈結束後,就會生成乙個最終的索引(第7步到第10步)。需要說明的是:上面第 8 步中每個 segment 的索引都是單獨建立的,之後才消重(第9步)。第10步就是大功告成,合併單獨的索引到乙個大索引庫。

dedup 工具可以從 segment 的索引中去除重複的url。因為 webdb 中不允許重複的url , 也就是說 fetchlist 中不會有重複的url,所以不需要對 fetchlist 執行 dedup 操作。上文說過,預設的抓取週期是30天,如果已經生成的舊 fetch 沒有刪除,而又生成了新的fetch 這是還是會出現重複的url的。當只有乙個抓取程式執行的時候是不會發生上述情況的。

從上面的介紹可以看出,一般情況下我們只要從頭執行的程式就可以了,不需要接觸底層的工具。但是搜尋引擎有很多「意外」,很多的時間需要花費在維護上,所以底層的工具也是需要掌握的。

Nutch搜尋引擎系統架構

下面分析一下nutch搜尋引擎系統的特點。一 系統架構 總體上nutch可以分為2個部分 抓取部分和搜尋部分。抓取程式抓取頁面並把抓取回來的資料做成反向索引,搜尋程式則對反向索引搜尋回答使用者的請求。抓 取程式和搜尋程式的介面是索引,兩者都使用索引中的字段。抓取程式和搜尋程式可以分別位於不同的機器上...

Nutch搜尋引擎分析

quote 一 系統架構 總體上nutch可以分為2個部分 抓取部分和搜尋部分。抓取程式抓取頁面並把抓取回來的資料做成反向索引,搜尋程式則對反向索引搜尋回答使用者的請求。抓取程式和搜尋程式的介面是索引,兩者都使用索引中的字段。抓取程式和搜尋程式可以分別位於不同的機器上。下面詳細介紹一下抓取部分。抓取...

大搜尋引擎系統架構

搜尋引擎在資訊世界的地位是填補人與資訊世界的資訊斷層,而大搜尋服務技術對於網際網路使用者的體驗與應用,具有革命性的提公升和改善。與傳統搜尋引擎相比,其基本流程主要包括如下幾個方面 其次,多源融合知識獲取,即基於泛在網獲取的資料,面向泛在網路空間的海量實體及關係進知識挖掘 34,35 通過融合 關聯 ...