孫 靜 李亞龍 萬 杰
(中國合肥230031安徽省地震局)
基于Heritrix與Lucene的地震專業搜索引擎設計
孫 靜 李亞龍 萬 杰
(中國合肥230031安徽省地震局)
隨著網絡科技的發展,用戶對搜索引擎提出更高要求,專業搜索引擎應運而生并不斷發展壯大。對地震專業搜索引擎進行系統研究,提出一種基于網絡爬蟲Heritrix和開源全文信息檢索包Lucene的專業檢索解決方案,完成信息資源抓取、鏡像文件建立及索引、搜索等關鍵操作的建立。
地震;Heritrix;Lucene;索引;搜索
當今世界是信息的世界,網絡信息資源飛速膨脹,如何在浩瀚如海的信息空間里快速查找并獲取所需信息已成為信息時代的根本問題之一。網絡搜索引擎在網絡信息資源查找中起到重要作用,可以幫助人們在繁多的網絡信息中查找所需內容。然而現有搜索引擎,如Google、百度等,均非為特定領域設計,面向某一特定領域某一特定專業、某一特定用戶的專業搜索引擎,即垂直搜索引擎(又被稱為專業搜索引擎),應運而生。專業搜索引擎可以更好地面向特定領域特定專業進行深入信息搜索,從而滿足特定用戶需求。
本文提出的地震專業搜索引擎即為一種專業搜索引擎,該引擎基于Lucene和Heritrix兩個核心技術,實現信息資源的抓取和索引、搜索功能的建立,提供在線查詢接口和友好的用戶界面。
1.1 網絡爬蟲Heritrix
Heritrix是一款基于Java語言開發的開源的爬蟲框架,被用來獲取完整的、精確的、站點內容的深度復制,包括獲取圖像及其他非文本內容、抓取并存儲相關內容,具有良好的可擴展性,開發者可以擴展插件模塊,來實現自己的抓取邏輯(邱哲,2010)。Heritrix包含以下主要組件:①CrawlOrder,為整個抓取任務的起點;②CrawlController,是一次抓取任務中的核心組件;③Frontier,為ToeThread提供URI工具;④ToeThread和ToePool,提供一個標準線程池,用于管理抓取線程ToeThread;⑤Heritrix提供一系列Processor,負責對URI進行不同處理。
1.2 開源式全文檢索工具包Lucene
Lucene是一個開發源代碼的全文檢索引擎工具包,可以提供完整的查詢檢索和索引檢索引擎功能,支持英文與德文兩種語言進行邏輯設計。Lucene是基于javayuan框架,針對完成本搜索引擎系統的索引和查詢功能設計的核心工具,程序設計員通過對Lucene的調用,輕松高效地完成全文索引引擎設計(邱哲,2010)。Lucene能對文檔進行預處理、過濾、分析、索引和檢索排序,應用程序編程接口和調用函數系統豐富,具有高效、簡單的特點。
2.1 總體設計
地震專業搜索引擎是服務于地震行業,是以地震為專業內容的搜索引擎系統。本搜索引擎包含3大模塊:基于Heritrix技術的排序抓取設計模塊、基于Lucene技術的索引排序模塊、基于網頁技術的用戶界面及結果顯示模塊。地震專業搜索引擎具體流程如下:基于Heritrix技術,爬行抓取相關網頁HTML格式和TXT格式的文本;基于Lucene技術設計索引排序模塊,對抓取的本地磁盤文本內容進行排序和索引;使用基于網頁技術的用戶界面及結果顯示模塊,對用戶的搜索要求進行相應接收,變成相應搜索指令,依據指令,將搜索結果按照相關網頁鏈接時間進行排序,以關鍵字提亮后顯示給用戶,用戶點擊相關鏈接瀏覽(圖1)。
地震專業搜索引擎分為前端程序和后端程序兩部分(圖2)。在前端流程中,用戶在搜索引擎提供的界面(用戶界面一般是一個帶有輸入框的 Web 頁面)中輸入搜索關鍵詞,應用程序將關鍵詞解析成搜索引擎可以理解的形式,在索引文件上進行搜索操作,排序后,搜索引擎將搜索結果返給用戶。在后端流程中,網絡爬蟲從因特網上獲取 Web 頁面,索引子系統進行解析并存入索引文件(楊頌,2010)。

圖1 專業搜索引擎系統流程Fig.1 Specialty search engine system flow chart

圖2 專業搜索引擎整體架構Fig.2 Specialty search engine architecture
2.2 實現基于Heritrix的抓取模塊
2.2.1 Heritrix安裝配置。本項目下載使用Heritrix1.14.4源代碼版本。在Eclipse中新建Java工程,將所需類庫和源代碼導入工程,需注意文件放置路徑。在Heritrix目錄下的conf文件中Heritrix.Properties設置兩行: Heritrix.mdline.admin=admin:admin,
“admin:admin”分別為用戶名和密碼;heritrix.cmdline.port=8081,默認的8080被Tomcat占用,需要修改。配置后的Heritrix項目運行結果見圖3。在瀏覽器中輸入http://localhost:8081,以Web方式配置Heritrix(具體配置細節可以參考相關文檔),即可進行網頁抓取。

圖3 Heritrix運行成功Fig.3 Heritrix successful operation diagram
2.2.2 網頁過濾。Heritrix抓取網站內部URI及包括的所有文件,一般只需搜索純文本,可以通過重寫FrontierScheduler內部的schedule達到過濾目的。實現代碼如下

為了提高抓取效率,可設置函數considerRobotsPreconditions(CrawlURI curi)的返回值為false,取消robots.txt的限制,抓取速度將提高至少一半 (羅剛,2009)。
2.3 設計與實現基于Lucene的排序和索引
抓取結束后,將搜索的結果數據進行索引、分詞,并對外提供接口展示給用戶。
2.3.1 網頁解析。抓取的網頁源碼包含大量HTML標簽,需經網頁過濾提取有用信息。在此使用Lucene提供的HTML解析器和htmlparser,改造或提取HTML,從中獲取節點的各項屬性和信息(黃穎,2008)。
地震專業搜索引擎使用Eclipse開發,新建Java工程,導入htmlparser.jar包和luceneHtmlParser包。新建一個類initHtmlParser,解析原始網頁,提取有用信息,并被其他控制類調用,部分核心代碼如下


2.3.2 索引建立。新建 “test.dw.paper.lucene.index”包,添加indextest類,用來建立索引。indextest類包含兩個私有屬性,分別是dataDir和indexDir。dataDir代表存放等待進行索引的 HTML頁面的路徑,indexDir代表存放Lucene索引文件的路徑。類indextest提供3個方法,分別是createIndex、addDocument和ifIndexExist。可以使用方法createIndex創建索引,采用方法 addDocument向一個索引上添加文檔,即添加一個HTML頁面。addDocument調用HTMLDocParser提供的方法,對HTML文檔進行解析,使用ifIndexExist判斷Lucene的索引是否存在。ccreateIndex是一個遞歸遍歷文件目錄來建立索引的函數。核心代碼如下

2.4 實現搜索功能
為了實現搜索功能,定義SearchManager類和SearchResultBean類。SearchManager用來實現搜索功能,SearchResultBean是個JavaBean,用來描述搜索結果的結構。SearchManager類有3個私有屬性:①searchWord,代表來自客戶端的搜索詞;②indexManager,代表在索引子系統中定義的類IndexManager的一個實例;③analyzer,代表用來解析搜索詞的解析器。
search方法首先檢查索引文件是否存在,如果存在,則在索引上進行檢索;如果不存在,調用類IndexManager提供的方法創建索引,然后進行檢索。搜索結果返回后,提取需要的屬性并為每個搜索結果生成類SearchResultBean的一個實例,放入一個列表并返回請求管理器。搜索結果包含兩個屬性:htmlPath和htmlTitle,其中htmlPath代表HTML文件路徑,htmlTitle代表HTML文件標題。核心代碼如下

使用search.jsp頁面實現用戶接口子系統,提供用戶界面,使用戶可以向 Web 應用程序服務器提交搜索請求,顯示搜索結果。
(1)提供一個用戶接口,向Web應用程序服務器提交搜索請求。搜索請求發送到名為SearchController類的Servlet。Servlet的名字和具體實現類的對應關系在Web.xml里指定。 即


系統采用Java語言實現,實驗從網絡中選取100篇與地震相關的網頁作為種子url集,并依此選取2 000篇地震相關文件進行測試。搜索引擎查詢結果界面見圖4。主要采集指標為查找精度、召回率,結果見表1。由實驗結果可知,地震專業搜索引擎在采集精度上效果較好。故將基于Heritrix和Lucence的地震專業搜索引擎應用到地震輿情預警系統中是可行的。

圖4 輿情監控系統Fig.4 Public opinion monitoring system

表1 結果統計Table 1 Result statistics
將Heritrix和Lucence進行有效結合,構建完整的搜索引擎,通過對源碼的修改和
封裝,實現以地震為專題搜索引擎的自動運行,用戶只需配置相應專題信息即可使用檢索功能,無需進行繁瑣配置,且不必關心搜索引擎的運行。地震專業搜索引擎的自動運行,易于普通用戶使用,提高了易用性,擯棄Heritrix的傳統用法,避免了繁瑣的配置過程;進行網頁過濾,避免爬取大量無用和冗余的網頁信息,節省磁盤空間,可在地震行業推廣使用。
黃穎,黃治平.HtmlParser提取網頁信息的設計與實現[J].江西理工大學學報,2008,28(6):26-28.
羅剛.自己動手寫搜索引擎[M].北京:電子工業出版社,2009.
邱哲,符滔滔,王雪松.開發自己的搜索引擎——Lucene+Heritrix[M].北京:人民郵電出版社,2010.
楊頌,歐陽柳波.基于Heritrix的面向電子商務網站增量爬蟲研究[J].軟件導刊,2010,9(7):38-39.
Design and implementation of the search engine for earthquake based on Heritrix and Lucene
Sun Jing,Li Yalong and Wan Jie
(Earthquake Administration of Anhui Province,Hefei 230031,China)
With the development of the internet technology,it is demanding to have enhanced search engine with great precision.Enterprise search engine is then proposed and advanced for such purpose.We systematically studied the search engine for seismology and implemented an enterprise search solution based on Web-based crawler Heritrix and Lucene which is an open source full-featured text search engine.The key functions in our system include acquiring information,creating image fi les,building indices and searching.
earthquake,Heritrix,Lucene,index,search
10.3969/j.issn.1003-3246.2016.05.030
孫靜(1978—),女,安徽合肥人,工程師,2005年畢業于中國科學技術大學軟件工程專業,獲碩士學位,主要從事網絡技術方面的研究工作
安徽省地震局青年基金課題
本文收到日期:2016-03-25