nutch工作流程簡介
4.執行抓取,獲取網頁資訊---fetch
5.更新資料庫,把獲取到的頁面資訊存入資料庫中---updatedb
6.重複進行3~5的步驟,直到預先設定的抓取深度。---這個迴圈過程被稱為“產生/抓取/更新”迴圈
7.根據segments的內容更新linkdb資料庫---invertlinks
(注:a.這裡linkDB是用來存放所有超連結及每個連結的連入地址和錨文字的,如下圖所示:
b.,crawlDB是用來存放所有需要抓取的超連結的資訊(存放下載的URL,及下載的日期,用來頁面更新檢查時間)
crawlDB和linkDB 是web link目錄,存放url 及url的互聯關係,作為爬行與重新爬行的依據,頁面預設30天過期。
c.segments是用來存放抓取的頁面,它與連入深度有關(depth),在這個資料夾下面包含留個子目錄,分別是:
content:抓取下來的網頁內容,在網頁抓取時生成
crawl_fetch:每個下載URL的狀態
crawl_generate
crawl_parse:用來更新crawldb的外鏈
parse_data:解析抓取的資料檔案時生成,主要是每個URL解析出的外部連結和元資料(metadata)
parse_text:解析抓取的資料檔案時生成,網頁的文字資訊
8.建立索引---index
二、搜尋程式工作流程
1.使用者通過使用者介面進行查詢操作
2.將使用者查詢轉化為lucene查詢
3.從索引庫中提取滿足使用者檢索需求的結果集
4.返回結果
詳細介紹:
第一部分流程綜述:
1.)建立初始URL集
建立URL集的方式主要通過兩種:一是通過各個URL間的web連結關係即超連結,二是通過人為的加入即站長提交,因為按照超連結的方式爬蟲不可能爬取網路中所有的站點,所以站長可以向搜尋引擎提出收錄某個站點,搜尋引擎經過核查後加入,
2.)inject操作分析
inject操作呼叫的是nutch的核心包之一crawl包中的類org.apache.nutch.crawl.Injector。它執行的結果是:crawldb資料庫內容得到更新,包括URL及其狀態。
注入抓取URL。因為Nutch的抓取程式要抓取網頁,而定位到某個(或者某些)網頁需要指定一個URL,在此基礎上,Nutch按照廣度遍歷策略進行抓取,會根據一開始指定的URL(可以是一個URL集合:URLs),以此為基礎進行抓取工作。它主要實現以下幾個功能:
a.將URL集合進行格式化和過濾,消除其中的非法URL,並設定URL狀態(UNFETCHED),按照一定方法進行初始化分值;
b.將URL進行合併,消除重複的URL入口
c.將URL及其狀態、分值存入crawldb資料庫,與原資料庫中重複的則刪除舊的,更換新的
3.)generate 操作分析
generate操作呼叫的是crawl包中的類org.apache.nutch.crawl.Generator。它執行的結果是:建立了抓取 列表,存放於segments目錄下,以時間為資料夾名稱。迴圈抓取多少次,segments資料夾下就會有多少個以時間為名稱的資料夾。它主要實現以下幾個功能:
a. 從crawldb資料庫中將URL取出並進行過濾;
b.對URL進行排序,通過域名、連結數和一種hash演算法綜合進行降序排列;
c.將排列列表寫入segments目錄中。
4.)fetch操作分析
fetch操作呼叫的是fetcher包中的類org.apache.nutch.fetcher.Fetcher。它執行的結果是:將頁面內容抓取下來,存於segment目錄下。它的主要功能如下:
a.執行抓取,按照segments目錄下的抓取列表進行;
b.抓取過程中,頁面的URL地址可能因為連結發生改變,從而需要更新URL地址;
c.抓取採用多執行緒方式進行,以提高抓取速度;
d.fetch操作過程中呼叫了parse操作。
5.)parse 解析操作
parse操作呼叫的是parse包中的類org.apache.nutch.parse.ParseSegment。它執行的結果是:將fetch得到的頁面解析為parse.text和parse.data,存於segments目錄下。
通過content parser解析器,最終獲取到的就是文字內容和其它一些可能需要用到的資料。有了這些可以識別的文字內容和資料,就可以基於此來建立索引庫,而且需要將本次抓取任務的詳細資訊登入到crawlDB,為下次抓取任務提供有用的資訊(比如:避免重複抓取相同的URL指定的頁面)。
因此接下來分為兩個方向:一個是索引,一個是更新crawlDB並繼續執行抓取任務:
indexing
這是一個索引的過程,對分析處理完成並提交的文字及其資料建立索引,通過索引檔案就可以實現資訊的檢索功能了。建立索引過程中,由於是基於Lucene的,所以用到了Analyzer分析器,對預處理的檔案進行分析、過濾、分詞等等,最後將寫入到索引庫,供搜尋程式工作使用。
update crawlDB with new extracted urls
根據網頁分析處理獲取到的資訊,更新crawlDB(爬行資料庫),並根據提取到的抓取任務已經注入的URLs迴圈執行抓取任務。
第二部分流程綜述:
這部分比較簡單了,就是啟動WEB伺服器,為使用者提供檢索服務。
這裡,使用者可以直接通過輸入檢索關鍵字,使用Lucene對使用者檢索關鍵字進行處理呼叫Nutch的搜尋程式,基於索引庫中儲存的資訊,來提取滿足使用者檢索需求的資訊。
http://www.jtben.com/document/963801