梁艷 劉雙廣 勞定雄
摘 要:針對企業(yè)異構數(shù)據(jù)融合檢索的需求,介紹了異構數(shù)據(jù)整合的常用方法和企業(yè)級搜索服務器solr的基本功能,結合xml異構數(shù)據(jù)整合、中文分詞技術和友好的用戶界面搭建了基于solr的異構數(shù)據(jù)融合檢索系統(tǒng),實現(xiàn)了對xml文件的索引和檢索,為異構數(shù)據(jù)融合檢索提供了解決方案。
關鍵詞:solr;異構數(shù)據(jù);XML;融合;檢索
1 背景
互聯(lián)網(wǎng)技術的發(fā)展,使得信息數(shù)據(jù)爆炸式增長。特別是在企業(yè)信息中,其非結構數(shù)據(jù)占到了增長數(shù)據(jù)的80%,包括PDF、word文檔,圖像、音頻和視頻等。企業(yè)在不同的應用平臺擁有不同的檢索系統(tǒng),這給用戶檢索信息帶來了諸多不便。如何構建一個統(tǒng)一的檢索平臺,使得用戶在海量的異構數(shù)據(jù)中實現(xiàn)統(tǒng)一檢索,一直是研究人員研究的熱點。
2 異構數(shù)據(jù)融合技術
異構數(shù)據(jù)是指數(shù)據(jù)格式不同,內容不一,描述不同內容的數(shù)據(jù),包括結構化數(shù)據(jù)(如數(shù)據(jù)庫)、半結構化數(shù)據(jù)(如HTML、XML)和非結構化數(shù)據(jù)(如文本、圖片)[1]。數(shù)據(jù)的統(tǒng)一訪問的基礎在于數(shù)據(jù)融合集成,目前對于解決異構數(shù)據(jù)融合的研究有數(shù)據(jù)倉庫、數(shù)據(jù)抽取和數(shù)據(jù)轉換。
數(shù)據(jù)倉庫是指不同來源的數(shù)據(jù)在進入數(shù)據(jù)倉庫之前,轉換為統(tǒng)一的格式為復雜的查詢提供統(tǒng)一的視圖,實現(xiàn)數(shù)據(jù)的統(tǒng)一訪問[2]。其代表性的成果是ETL集成工具,ETL[3]允許提取、轉換和加載異構數(shù)據(jù)到數(shù)據(jù)倉庫中和實現(xiàn)數(shù)據(jù)遷移任務。但數(shù)據(jù)倉庫主要是針對不同數(shù)據(jù)庫中的結構化數(shù)據(jù)的整合,很難應用于非結構化數(shù)據(jù)的集成、實現(xiàn)非結構化數(shù)據(jù)的統(tǒng)一訪問[4]。
數(shù)據(jù)抽取是指將無結構的的文本結構化處理,即輸入原始文本輸出固定格式[5]。部分數(shù)據(jù)庫管理系統(tǒng)自帶有數(shù)據(jù)抽取工具,能夠低成本的解決異構數(shù)據(jù)整合問題,但在實際應用中有一定的局限性。
XML整合是數(shù)據(jù)轉換技術的代表,即將各種異構數(shù)據(jù)轉換為統(tǒng)一的xml文本格式,實現(xiàn)異構數(shù)據(jù)整合。XML(eXtensible Markup Language,擴展標記語言)是互聯(lián)網(wǎng)下的一個關鍵技術,它能很好地實現(xiàn)來源極端異構的數(shù)據(jù)描述和傳輸。XML能獨立于應用系統(tǒng),不受任何特殊的軟件或者硬件平臺限制,并且這些數(shù)據(jù)能重復使用,簡單易懂,成為交換各種結構化、半結構化、非結構化信息的良好方式[6]。因此,采用XML文檔作為底層數(shù)據(jù)的融合與集成技術,實現(xiàn)了異構數(shù)據(jù)源間數(shù)據(jù)共享并且更有效地利用信息資源。XML整合數(shù)據(jù)的一般模型為下圖一所示:
3 solr搜索引擎
3.1 solr簡介
Solr(Searching on Lucene Replication)[7]是Apache軟件基金會下的一個開源子項目,它是一個高性能的、采用java5開發(fā)的、基于lucene全文搜索庫的企業(yè)搜索服務器。提供了比Lucene更為豐富的查詢語言,同時實現(xiàn)了可配置、可擴展并對查詢性能進行了優(yōu)化,并且提供了一個完善的功能管理界面,是一款非常優(yōu)秀的全文搜索引擎。
3.2 solr體系架構
Solr的系統(tǒng)結構圖[8]如圖2所示,solr主要分為3層,solr在lucene的基礎上進行了大量的改進,其中solr的底層為對lucene一些功能的改進封裝。中間層為solr的核心層,搜索引擎的主要功能都是在這一層實現(xiàn)的,包括對文檔進行分析、建立索引、配置solr運行文件和保存索引文件等。最頂層包括HTTP接口,負責通過HTTP傳入和返回XML文檔;管理界面和索引更新模塊。另外,索引復制功能是一個獨立的模塊,它是由一個主索引和多個從索引構成,從索引從主索引復制索引,主索引負責更新索引,從索引復制同步索引和查詢,一個主索引可以復制索引到多個從索引庫。索引復制功能主要用于分布式索引和檢索[8]。
3.3 solr的特性
⑴靈活性。Solr支持從數(shù)據(jù)庫、web頁面和文本中直接導入數(shù)據(jù),進行索引。它的索引方法非常簡單,用POST方法向服務器發(fā)送一個請求,就可完成索引;并且solr的索引文件與lucene完全兼容;Solr的靈活性還體現(xiàn)在可以根據(jù)需求靈活的修改配置文件,定義字段類型以及是否被索引、存儲。
⑵異構性。Solr作為企業(yè)級搜索服務器,它最大的特點就是提供了對異構系統(tǒng)的整合,解決了企業(yè)搜索的一大難題。Solr它提供了基于HTTP的標準XML和JSON接口,能對XML文件直接建立索引。solr還提供了DIH(DataImportHandler),用來從其他的異構系統(tǒng)批量導入數(shù)據(jù)的批處理器。
⑶可擴展性。Solr在頂端定義了一些對外的抽象接口,開發(fā)者可以將自己定義的模塊功能添加到solr中,而只需要修改相應的配置文件就可以將相應的功能添加進去。
4 異構數(shù)據(jù)融合檢索系統(tǒng)的設計與實現(xiàn)
4.1 系統(tǒng)架構
異構數(shù)據(jù)融合檢索系統(tǒng)需要實現(xiàn):
⑴從各數(shù)據(jù)庫中提取數(shù)據(jù)信息,并轉換為相應的xml文件,即完成數(shù)據(jù)爬蟲功能;
⑵采用solr對xml文件創(chuàng)建索引;
⑶友好的用戶界面,實現(xiàn)響應用戶的搜索請求,返回結果。
異構數(shù)據(jù)融合檢索系統(tǒng)框圖如圖3所示,爬蟲模塊完成提取數(shù)據(jù)的xml文件,實現(xiàn)異構數(shù)據(jù)的融合;solr索引模塊需加入中文分詞功能,完成對xml文件的索引;用戶界面模塊需要完成接受用戶的查詢請并且高亮顯示,加上solr查詢結果默認是以xml文件顯示的,還需要實現(xiàn)xml文件與原數(shù)據(jù)庫的關聯(lián)顯示。
4.2 異構數(shù)據(jù)抓取
為了實現(xiàn)異構數(shù)據(jù)整合,本文采取將所有異構數(shù)據(jù)源轉換為xml文件。本文具體采用Dom4j開源庫提供的類和函數(shù)來生成xml文件。部分代碼如下:
4.3 solr系統(tǒng)實現(xiàn)
⑴solr的安裝。Solr是apache的開源項目,需安裝在JDK和servlet容器(如tomcat)的基礎上。安裝好JDK和tomcat后,在官網(wǎng)下載solr安裝文件,解壓到當前目錄。復制solr的dist目錄下的war文件到tomcat的webapps目錄下,并重命名為solr.war。復制solr的example目錄下的solr文件到指定目錄下,并把該目錄設置為solr.home。solr安裝完成后,訪問solr的管理界面http://localhost:8080/solr/,如出現(xiàn)solr的系統(tǒng)管理界面,則配置成功。Solr的管理界面如圖4所示。
⑵中文分詞。Solr只能提供簡單的中分分詞效果,為了提高異構數(shù)據(jù)檢索系統(tǒng)的檢索精準度,需要為solr添加中文分詞器,本文選擇IKAnalyzer作為solr的中文分詞器。在官網(wǎng)下載IKAnalyzer安裝包,解壓到本地目錄,并將IKAnalyzer2012FF_u1.jar、IKAnalyzer.cfg.xml、stopword.dic文件添加到tomcat\webapps\solr\WEB-INF\lib 文件中。最后,修改schema.xml文檔中的內容。具⑶元數(shù)據(jù)定義標準。在進行xml文件索引之前,需要在schema.xml文件中定義元數(shù)據(jù)字段,包括字段名稱、字段類型和和是否索引、存儲等信息。Solr對文件索引一定要定義唯一標示符uniquekey,一般將id字段設置為唯一標示符。為了實現(xiàn)不加字段名搜索,還需要配置默認搜索字段defaultSearchField,若需多個默認搜索字段,可將其余字段復制到defaultSearchField設置的默認字段中。具體配置如下:
⑷用戶界面。設計用于界面時要求美觀大方,它的主要功能有接受用戶的查詢輸入,提交給solr,查詢后在返回和顯示查詢結果。在瀏覽器中輸入http://localhost:8080/search 將顯示系統(tǒng)主頁,如圖5所示,檢索結果如圖6所示。
5 結束語
Solr作為一種開源的搜索引擎,為企業(yè)搭建融合搜索提供了可能。本文在solr基礎上進行二次開發(fā),搭建了異構數(shù)據(jù)檢索系統(tǒng)。本文的主要工作如下:完成了數(shù)據(jù)融合,將異構數(shù)據(jù)轉換為統(tǒng)一的xml格式;對solr進行相關研究,搭建了solr檢索系統(tǒng);編寫了用戶友好界面。
該系統(tǒng)目前還存在一些問題,如對查詢結果重排問題、分布式索引檢索問題,接下來需要考慮系統(tǒng)存在的不足對其改進優(yōu)化,以提高系統(tǒng)的實用性和整體性能。
[參考文獻]
[1]柏永斌,許利亞,馮震宇,黃愛軍.基于XML和WebService的異構數(shù)據(jù)整合技術應用研究[J].數(shù)據(jù)庫與信息管理.2009(8):1796-1797.
[2]趙軍,王國胤,吳中福,李華.數(shù)據(jù)倉庫及其實現(xiàn)[J].數(shù)字通信,2000(8):35-38.
[3]A.Albrecht,METL:Managing and Integrating ETL Processes,[C] VLDB09, 6p: 24-28, 2009, August,Lyon, France.
[4]楊岳.非結構化數(shù)據(jù)統(tǒng)一訪問平臺及索引技術研究[D].解放軍信息工程大學碩士論文,2010:9-11.
[5]劉桂峰.Deep Web數(shù)據(jù)抽取及集成技術研究[D].蘇州大學碩士論文.2009:7-9.
[6]魏東平,潘向陽.基于XML的異構數(shù)據(jù)的整合與集成模式探討[J].內蒙古科技與經(jīng)濟 2004:87-88.
[7]http://code.google.com/p/ik-analyzer/.
[8]陳波.基于開源全文檢索系統(tǒng)Solr的OPAC分面瀏覽[J].現(xiàn)代圖書情報技術,2007(11):72-75.