【免費畢設(shè)】基于Ajax+Lucene構(gòu)建搜索引擎的設(shè)計和實現(xiàn)(源代碼+lunwen)
4.2 數(shù)據(jù)庫的設(shè)計
本課題包含一張用于存放抓取回來的網(wǎng)頁信息如表1。?

4.3 模塊設(shè)計
該模型按照功能劃分為三個部分,一是爬蟲抓取網(wǎng)頁部分,二是從數(shù)據(jù)庫建立索引部分,三是從前臺頁面查詢部分。系統(tǒng)的功能流程(如圖5.1和5.2)。
表1 網(wǎng)頁數(shù)據(jù)存儲表


該系統(tǒng)用3個模塊來實現(xiàn)搜索引擎的主要功能。流程如上圖所示。
從一個或若干初始網(wǎng)頁的URL開始,獲得初始網(wǎng)頁上的URL,在抓取網(wǎng)頁的過程中,不斷從當(dāng)前頁面上抽取新的URL放入隊列,直到滿足系統(tǒng)的一定停止條件。這條件可以是限定的某個域名空間、或者是限定的網(wǎng)頁抓取級數(shù)。當(dāng)在獲取URL時存在這樣的問題就是在實際應(yīng)用中主要以絕對地址和相對地址來表現(xiàn)。絕對地址是指一個準確的、無歧義的Internet資源的位置,包含域名(主機名)、路徑名和文件名;相對地址是絕對地址的一部分。然后把抓取到的網(wǎng)頁信息包括網(wǎng)頁內(nèi)容、標題、鏈接抓取時間等信息經(jīng)過‘減肥’后保存到網(wǎng)頁存儲數(shù)據(jù)庫表里。然后通過正則表達式,去掉多余的HTML標簽。因為抓取的網(wǎng)頁含有HTML標簽、Javascript等,對搜索多余的信息,如果抓取到的網(wǎng)頁不經(jīng)過處理就會使搜索變得不夠精確。
讓爬蟲程序能繼續(xù)運行下去,就得抓取這個網(wǎng)頁上的其它URL,所以要用正則將這個網(wǎng)頁上的所有URL都取出來放到一個隊列里。用同樣的方法繼續(xù)抓取網(wǎng)頁,這里將運用到多線程技術(shù)。
為了對文檔進行索引,Lucene提供了五個基礎(chǔ)的類,他們分別是Document,F(xiàn)ield,IndexWriter,Analyzer,Directory Document是用來描述文檔的,這里的文檔可以指一個HTML頁面,一封電子郵件,或者是一個文本文件。一個Document對象由多個Field對象組成的。可以把一個Document對象想象成數(shù)據(jù)庫中的一個記錄,而每個Field對象就是記錄的一個字段。在一個文檔被索引之前,首先需要對文檔內(nèi)容進行分詞處理,這部分工作就是由Analyzer來做的。Analyzer類是一個抽象類,它有多個實現(xiàn)。針對不同的語言和應(yīng)用需要選擇適合的Analyzer。Analyzer把分詞后的內(nèi)容交給IndexWriter來建立索引。
論文目錄:
