廖彬
(福州大學(xué) 福建省福州市 350108)
目前多數(shù)的搜索引擎已經(jīng)能很好的為高校師生提供文檔格式的互聯(lián)網(wǎng)資源,但是面對(duì)互聯(lián)網(wǎng)信息的海量、異構(gòu)的特點(diǎn),以及用戶對(duì)信息搜索精度、廣度和速度的要求下,搜索引擎暴露出諸多缺點(diǎn):搜索覆蓋率低,一個(gè)普通的搜索引擎只能覆蓋整個(gè)互聯(lián)網(wǎng)信息資源的5 ~20%;[1]。高校師生作為一個(gè)特殊的群體,對(duì)學(xué)術(shù)類等特定網(wǎng)絡(luò)文檔的搜索需求極高,在數(shù)據(jù)量聚增的大背景下,如何讓搜索變得更便捷,搜索的內(nèi)容更完備顯得越來(lái)越重要。
html parser 是一個(gè)純的java 寫(xiě)的html 解析的庫(kù),它不依賴于其它的java 庫(kù)文件[2]。HTML Parser 主要用于改造或提取html 頁(yè)面并能進(jìn)行超高速解析,是目前使用最為廣泛的網(wǎng)頁(yè)分析技術(shù)。
Lucene 是一個(gè)開(kāi)放源代碼的全文檢索引擎工具包,它是一個(gè)全文檢索引擎的架構(gòu),不僅提供了完整的索引和檢索引擎,而且為數(shù)據(jù)訪問(wèn)和管理提供了接口[3],這使得它能夠方便的嵌入到各種應(yīng)用中實(shí)現(xiàn)針對(duì)應(yīng)用的全文索引/檢索功能。
系統(tǒng)框架圖如圖1所示。本次系統(tǒng)主要分為獲取和檢索兩部分:獲取部分根據(jù)用戶自由組合不同的搜索引擎和信息類型的條件通過(guò)爬蟲(chóng)技術(shù)抓取相應(yīng)頁(yè)面的內(nèi)容;運(yùn)用HTML Parser 進(jìn)行網(wǎng)頁(yè)內(nèi)容分析,過(guò)濾掉網(wǎng)頁(yè)中的垃圾信息,提取對(duì)用戶有用的文檔鏈接;最后利用多線程技術(shù)對(duì)文檔進(jìn)行下載,并與從師生文檔庫(kù)搜索出的文檔合并,獲取完整的文檔。檢索部分是一個(gè)基于Lucene 檢索工具包開(kāi)發(fā)的檢索系統(tǒng),完成了從對(duì)文檔的分析、分詞、索引建立到最后的檢索這一系列流程,并優(yōu)化了索引建立的速度,讓師生能快速查找到自己想要的文檔。
本次研究在網(wǎng)絡(luò)信息抓取部分主要通過(guò)統(tǒng)一的輸入調(diào)用各大搜索引擎進(jìn)行信息搜索,通過(guò)接口調(diào)用搜索到的結(jié)果,對(duì)搜索的內(nèi)容進(jìn)行進(jìn)一步的分析,從中提取用戶有用的信息,快速下載這些信息到本地保存,為后期的索引提供大量的數(shù)據(jù)基礎(chǔ)。
圖2 通過(guò)爬蟲(chóng)技術(shù)構(gòu)建URL,并用openConnection()方法創(chuàng)建Connection 從而得到與URL 相應(yīng)的HTML 頁(yè)面的數(shù)據(jù)流。運(yùn)用HTML Parser 對(duì)HTML 頁(yè)面進(jìn)行分析,采用廣度優(yōu)先搜索的爬蟲(chóng)策略從中提取出鏈接節(jié)點(diǎn),對(duì)鏈接進(jìn)行判斷并采取不同的操作,從而減少鏈接的下載數(shù)量,提高速率。
師生文檔庫(kù)主要指高校內(nèi)部用于師生交流學(xué)習(xí)而建立的文檔數(shù)據(jù)庫(kù),此文檔數(shù)據(jù)庫(kù)應(yīng)包含文檔的格式、名稱、文檔的存放路徑,通過(guò)與文檔數(shù)據(jù)庫(kù)的對(duì)接,可以實(shí)現(xiàn)通過(guò)用戶的關(guān)鍵字和格式輸入從而獲得文檔的存放路徑,并直接進(jìn)行下載進(jìn)本地方便后面的檢索。
圖1:系統(tǒng)框架圖
圖2:URL 構(gòu)造活動(dòng)圖
同時(shí)引入多線程機(jī)制對(duì)每一個(gè)文檔啟動(dòng)一個(gè)獨(dú)立的線程負(fù)責(zé)下載。線程總數(shù)是有限制的,通過(guò)ThreadCount 參數(shù)確保同一時(shí)間下載的線程數(shù)不超過(guò)數(shù)量限制。該機(jī)制的實(shí)現(xiàn)過(guò)程如下:
該機(jī)制確保了同一時(shí)間只有ThreadCount 個(gè)線程在運(yùn)行,只有當(dāng)其中有線程執(zhí)行完畢之后才會(huì)啟動(dòng)新的線程。
通過(guò)上面的信息獲取,我們將在本地獲得包括HTML、DOC、PDF 等格式的大量文件,接下來(lái)就是要對(duì)這大量的數(shù)據(jù)文檔建立索引,方便師生進(jìn)行特定的內(nèi)容搜索。本次檢索部分主要通過(guò)Lucene來(lái)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)實(shí)用性強(qiáng)、擴(kuò)展性高的檢索系統(tǒng)。
在檢索部分設(shè)計(jì)上,因?yàn)長(zhǎng)ucene 只能對(duì)純文本文件進(jìn)行操作,系統(tǒng)管理員應(yīng)先通過(guò)分析器對(duì)本地的文檔進(jìn)行純文本抽取,然后運(yùn)用分詞器對(duì)傳入的純文本文件進(jìn)行分詞處理,提供詞元序列建立索引,并把索引的結(jié)果存入索引數(shù)據(jù)庫(kù)。用戶通過(guò)用戶查詢界面輸入要查詢的關(guān)鍵字,系統(tǒng)把關(guān)鍵字提取后傳入索引器,索引器根據(jù)關(guān)鍵字到索引數(shù)據(jù)庫(kù)中進(jìn)行查找相應(yīng)內(nèi)容,并把查找的內(nèi)容文檔傳回給用戶。
在文本分析上,首先對(duì)傳入的文件類型進(jìn)行判斷其有效性。對(duì)有效類型文檔送入相應(yīng)文件類型的分析器進(jìn)行文本分析,得到Lucene 可以識(shí)別的純文本文件并送入分詞器中進(jìn)行分詞。
在索引建立和檢索上,Lucene 提供了非常簡(jiǎn)單的建立索引的方法,將要檢索的文檔封裝成Document 對(duì)象并進(jìn)行分析分詞處理,再將索引對(duì)象寫(xiě)入索引庫(kù)。最后利用org.apache.search.IndexSearcher 包提供到的一些類來(lái)實(shí)現(xiàn)對(duì)索引的檢索。
本次研究針對(duì)大數(shù)據(jù)還特別進(jìn)行了索引優(yōu)化,由于師生要監(jiān)測(cè)的數(shù)據(jù)量可能非常大,所以數(shù)據(jù)的檢索速度是至關(guān)重要的。除了可以在硬件上進(jìn)行提升之外,還可以對(duì)系統(tǒng)本身進(jìn)行代碼優(yōu)化,這所花費(fèi)的成本要比硬件升級(jí)要低得多。Lucene 在內(nèi)存中持有一塊緩沖區(qū),而類IndexWriter 提供了三個(gè)參數(shù)用來(lái)調(diào)整緩沖區(qū)的大小以及往磁盤(pán)上寫(xiě)索引文件的頻率[4]。下面將對(duì)幾個(gè)參數(shù)做簡(jiǎn)要描述。
合并因子(mergeFactor):決定了在Lucene 的一個(gè)索引塊中可以存放多少文檔以及把磁盤(pán)上的索引塊合并成一個(gè)大的索引塊的頻率[4]。
最大合并文檔因子(MaxMergeDocs):決定在合并段過(guò)程中的最大的段合數(shù)目。設(shè)置的值比較小時(shí),對(duì)于交互性的索引比較好,比較的界限一般是10,000[5]。
最小合并文檔因子(MaxBufferedDocs):決定在對(duì)內(nèi)存中的文檔進(jìn)行合并成段的操作之前,要求的最小的文檔數(shù)量。表1 反映了兩個(gè)參數(shù)取不同值時(shí)對(duì)索引時(shí)間的影響。
一般最大合并文檔因子采用系統(tǒng)默認(rèn)的最大值,無(wú)需設(shè)置,通過(guò)表1 我們可以清楚地看到合并因子和最小合并文檔因子對(duì)索引時(shí)間的影響。因子的取值主要是占用內(nèi)存的大小,實(shí)驗(yàn)表明,只要有足夠大的內(nèi)存,就可以為合并因子和最小合并文檔數(shù)這兩個(gè)參數(shù)設(shè)置較大的值以提高索引速度。
從圖3 我們可以看到,本次的系統(tǒng)可通過(guò)關(guān)鍵字選擇性的對(duì)谷歌、百度、搜狗、搜搜、微軟Bing、有道六大搜索引擎進(jìn)行同步搜索,并支持大部分的文件格式下載和檢索。
由表2 數(shù)據(jù)可知,本文所設(shè)計(jì)的系統(tǒng)可以正確地處理DOC、PPT、PDF、XLS 和HTML 等文檔,對(duì)于海量的數(shù)據(jù),檢索速度還是令人滿意的。
表1:不同參數(shù)值對(duì)索引時(shí)間影響表
表2:測(cè)試結(jié)果表
圖3:系統(tǒng)功能主界面
本次系統(tǒng)在測(cè)試中搜索的完備性、針對(duì)性及檢索速度上得到了用戶的肯定,隨著計(jì)算機(jī)硬件技術(shù)的發(fā)展以及索引算法的進(jìn)一步優(yōu)化,相信專用信息抓取在大數(shù)據(jù)時(shí)代來(lái)臨的時(shí)候?qū)?huì)獲得更為完備的數(shù)據(jù),擁有更為廣闊的研究?jī)r(jià)值。