999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Lucene的文獻資料全文檢索系統的設計與實現

2014-12-14 07:09:00胡宏偉
重慶理工大學學報(自然科學) 2014年11期
關鍵詞:用戶信息系統

胡宏偉,虞 萍,周 南,喬 軍

(中國農業大學網絡中心,北京 100083)

近年來,隨著文獻資料數量的持續增長及其影響力的日益擴大,文獻資料的重要性也在逐漸增加。有鑒于此,許多單位建立了專門的內部文獻管理系統,實現了內部文獻資料的集中存儲和管理,促進了文獻資料的應用和推廣。

然而,由于現有的文獻管理系統多采用目錄檢索或數據庫查詢方式,使得其在為用戶提供豐富文獻資料的同時也給用戶的文獻查詢帶來了新的問題,即用戶很難采用常規的檢索方式實現文獻的快速準確查詢。因此,如何建立一種能從海量的文獻資料中快速、準確查找所需文獻的檢索系統,就顯得很有必要。

研究表明,實現海量電子資料快速、準確檢索的核心技術是全文檢索[1]。全文檢索可以按照一定的策略對電子信息進行組織和處理,并能通過特定的方法實現信息的快速、準確檢索。現階段,實現全文檢索的工具很多,其中Lucene是當今最為流行的開源全文檢索工具包之一[1-2]。

1 關鍵技術研究

1.1 全文檢索介紹

全文檢索是一種實現電子資料中的信息與檢索項快速匹配的檢索方法[3],它以各種計算機數據(包括文本、圖像、音視頻等)作為處理對象,通過掃描其內容,為每一個詞建立索引;在用戶查詢時,檢索程序則根據已建立的索引進行查找和匹配,并將查找結果反饋給用戶[4-5],從而實現電子資料的快速查找。

全文檢索一般包括信息獲取和存儲、信息索引創建、信息檢索和用戶搜索界面4個部分:

1)信息獲取和存儲。全文檢索的信息獲取方式一般有2種:一是通過網絡爬蟲方式獲取互聯網中其他網站中的信息,類似于百度、google等全文檢索引擎;二是在信息產生過程中直接獲取信息,如企業級網站全文檢索的信息獲取。獲取后的信息一般存放到系統的存儲設備中,為了檢索和查閱的方便,信息的存儲一般按照固定的格式,例如標題、內容、作者和發布日期等。

2)信息索引創建。索引創建是指在信息獲取后,通過掃描信息中的每一個詞,建立一個能精確定位到每個詞的索引,然后將該索引添加到索引文件中,從而完成索引的創建。

3)信息檢索。信息檢索一般由用戶發起請求,檢索程序根據用戶提交的關鍵字對索引文件進行檢索,并通過一系列的計算、合并和篩選等操作獲得查詢結果,最后將查詢結果返回給用戶,完成檢索過程。

4)用戶搜索界面。用戶搜索界面主要實現用戶檢索詞的輸入、查詢結果顯示等功能。

1.2 Lucene介紹

Lucene是一個完全開放源代碼的全文檢索工具包[6]。它最初由Doug Cutting開發并于2010年捐獻給Apache軟件基金會,Lucene目前是Jakara項目組的一個子項目。Lucene最初是用Java開發的,隨著項目的發展和應用的不斷推廣,Lucene逐漸被翻譯成了C、C++、C#、Perl等多種語言。

Lucene不是一個完整的全文檢索引擎,而是一個提供了完整的索引引擎和查詢引擎的架構。它為數據的訪問和管理提供了簡單的函數調用接口,可以方便地嵌入到各種應用中實現針對應用的全文索引/檢索功能。目前Lucene已被許多項目作為開發引擎,如 Eclipise、Jive、Conoon和 Eyebrows等[7]。

Java版Lucene的體系結構由基礎結構封裝、索引核心和對外接口3部分組成,分為7個JAR包[8],如圖1 所示。

圖1 Lucene體系結構

索引核心部分包含org.apache.lucene.index和org.apache.lucene.store 2個JAR包:index包提供了索引的創建接口,實現了索引記錄的增加、更新、刪除及讀取記錄等功能;store包提供了底層I/O的存儲結構,負責索引的讀寫等數據存儲管理。

基礎結構封裝部分包含org.apache.lucene.document和 org.apache.lucene.utit 2個 JAR包:document包提供了索引文檔需要的類,包括Document和Field等;util包含了一些公共的數據結構。

對外接口部分包括org.apache.lucene.search、org.apache.lucene.queryPaser和 org.apache。

lucene.analysis含3個JAR包:search包是lucene的檢索接口,它提供了在索引文件上進行查詢所需要的類。常用的包括IndexSearcher和Hits 2個類,其中IndexSearcher類定義了在指定的索引上進行搜索的方法;Hits類則用來保存搜索得到的結果。queryPaser包是查詢分析器接口,負責語法分析,實現關鍵詞間的與、或、非等運算操作;analysis包是語言分析器,主要用于切分詞。lucene提供了針對不同語言的分詞,開發人員也可以在此基礎上進行不同語言分詞器的開發。

作為一個開源的全文搜索引擎,Lucene有以下特點:

1)Lucene是完全開放源代碼的搜索引擎工具,開發者不僅可以充分利用其現有的功能,還可以在此基礎上根據實際需要進行針對性的開發,滿足不同程度用戶的需求。Lucene面向對象的系統架構也使得其具有良好的可擴展性,易于進行新模塊的開發。

2)Lucene采用獨立于應用平臺的索引文件,使不同平臺的項目能夠共享索引文件。它還設計了獨立于語言和文件格式的文本分析接口,能夠方便地實現不同語言和文件格式的擴展。

3)Lucene采用了分塊索引模式,在進行索引更新時,可以通過建立小的索引文件提升索引速率,然后再通過與原有文件的合并達到效率優化的目的。

2 系統架構與功能分析

2.1 系統軟件架構

本文采用J2EE架構進行文獻資料全文檢索系統的開發。系統采用Struts,Hibernate和Spring框架的5層軟件開發架構[9]。系統整體框架包括WEB瀏覽器上的用戶層、J2EE服務器上的WEB層、業務邏輯層、數據持久層以及數據庫服務器上的數據層,系統架構如圖2所示。

圖2 系統開發架構

各層的功能如下:用戶層主要是指用戶瀏覽器上的HTML頁面,用戶通過其向WEB層發起應用請求,實現用戶的需求;WEB層主要采用JSP和Struts對用戶的請求進行呼應;業務邏輯層采用Spring框架,它是一種控制反轉和面向容器輕量級的容器框架;數據持久層采用Hibernate框架,實現了對象、關系之間的映射和數據的持久化;數據層采用Mysql數據庫和索引文件庫,實現對文獻數據及文獻索引的增、刪、改、查等操作。

2.2 系統功能分析

文獻資料全文檢索系統主要實現了文獻資料的收集和全文檢索兩大主要功能。其中,文獻資料收集部分主要實現文獻資料提交、存儲和審核管理等功能;而全文檢索部分實現文獻資料的索引和數據檢索等功能。

本文將完整的文獻資料設計為屬性信息和對象文件兩部分:文獻的屬性信息包括文獻標題、作者、出版或收錄單位、文獻摘要、關鍵字等信息;而文獻的內容則存儲在對象文件,對象文件由txt、html、word、pdf、ppt、excel等多種格式。本文對文獻資料的收集、索引和檢索操作也基于這兩部分開展。

根據系統的功能分析,本系統的設計思路分為4個步驟,其流程如圖3所示。首先,由用戶通過文獻資料提交系統提交文獻資料,文獻資料提交成功后將存放到存儲系統中;第二,由管理員審核用戶提交的文獻資料;第三,系統對通過審核的文獻資料進行轉換、清洗和全文索引創建;第四,用戶通過檢索頁面提交檢索請求,由Lucene檢索引擎進行檢索操作并向用戶返回檢索結果。

圖3 文獻資料全文檢索流程

根據系統分析和設計思路,本文將校內文獻全文檢系統劃分為5個模塊,包括文獻資料管理模塊、數據存儲模塊、數據解析與轉換模塊、文獻索引模塊、文獻檢索模塊。各模塊的功能如下:

文獻資料管理模塊:實現用戶文獻資料的提交、編輯以及管理員對文獻資料的審核、編輯和管理等操作。

文獻資料存儲模塊:存儲用戶提交的文獻資料屬性信息和對象文件,并建立屬性信息和對象文件的1-1對應關系。

數據解析與轉換模塊:從關系數據庫中讀取文獻資料的屬性信息并從對象文件抽取文件內容,通過轉換和清洗操作將文獻資料的屬性信息和對象文件內容轉變為可被Lucence索引的數據格式。

文獻索引模塊:利用Lucence搜索引擎對文獻資料進行全文索引,實現索引的建立、更新和刪除等操作。

文獻檢索模塊:通過檢索頁面對被索引的文獻資料進行全文檢索,包括對各個字段關鍵詞的邏輯操作后的綜合檢索等。

其中文獻資料存儲、數據解析與轉換、文獻索引和檢索4個模塊是系統的核心技術部分,本文的實現部分也針對這4個模塊開展。

3 系統實現

3.1 文獻資料存儲

根據校內文獻資料的特點,本文文獻資料的存儲將采用數據庫和文件系統2種方式。文獻資料的對象文件存放到文件系統,對象文件提交成功后,系統按照上傳日期和隨機數重命名對象文件,確保對象文件名稱的唯一性;文獻資料的屬性信息和對象文件的路徑及名稱則存放到Mysql數據表中并與對象文件形成1-1對應關系。數據庫中文獻資料的表結構如表1所示。

表1 文獻資料表結構

3.2 數據解析與轉換

由于 Lucene只支持對 Document對象的索引[10],因此文獻資料的信息需要轉換成Document支持的數據格式。根據Document的格式特點,數據庫中的屬性信息一般可以直接進行索引,而存放到文件系統中的對象文件則需要通過讀取、清洗等操作轉化為文本格式。本文中對象文件有txt、html、word、pdf、ppt、excel等多種不同格式。為了讀取對象,本文設計了不同對象文件的讀取方式,并基于不同的Java包實現了對象文件的讀取,其過程如圖4所示。

實現對象文件內容抽取與解析的核心代碼如下:

本文利用apache的poi包讀取word內容的核心代碼,實現word文件讀取的核心代碼如下:

圖4 對象文件解析與轉換

3.3 文獻資料索引

文獻資料信息被解析和轉換后就可以進行索引操作了。文獻索引就是利用Lucene全文索引技術將解析和轉換后的文獻資料生成一條條的索引記錄并將其添加到索引文件的過程。文獻索引實現了全文索引記錄、文獻屬性信息和對象文件三者間的關聯。

Lucene搜索引擎的全文索引主要由寫索引器(IndexWriter)、文檔(Document)和域(Field)3個類來實現[11-121。在Lucence中,索引建立分為4個步驟:第一步,首先要創建索引文件目錄(Directory),它負責存儲索引記錄,索引文件的存儲有內存、文件系統和數據庫3種方式,本文的索引文件的存儲采用文件系統方式;第二步,創建 IndexWriter索引器,它接受新的Document文檔,并將其寫入索引文件中;第三步,建立Document文檔,并為其添加Field對象,每個Document文檔對應著一個文獻資料對象,Documet通過Filed對象存儲了文獻資料的各類信息(包括文檔id、標題、作者、內容等);第四步,利用IndexWriter索引器對Document進行索引,并將其寫入索引文件,完成索引。文獻資料的索引過程如圖5所示:

圖5 文獻資料索引過程

實現資料全文索引的核心代碼如下:

3.4 文獻檢索

文獻檢索是指利用Lucene的全文檢索引擎實現文獻資料的查詢功能[13-14],它根據用戶輸入的查詢語句將符合條件的索引信息從索引文件中提取出來,并將結果返回給用戶。文獻檢索一共包含以下幾個過程:首先,用戶通過查詢頁面輸入查詢語句;其次,利用Query對象封裝查詢語句并利用Analyzer對象分析查詢語句;第三,打開索引文件,通過SearcherManage獲得IndexSearcher對象;第四,利用IndexSearcher對象進行查詢,并將查詢結果返回到Hits結果集中;第五,將查詢結果展現在查詢頁面中。

利用Lucence實現文獻材料全文檢索的核心代碼如下:

除了基本查詢之外,本文還利用BooleanQuery實現了對文獻作者、關鍵詞、出版單位等多條件的布爾查詢,并基于RangeQuery實現了出版時間的范圍查詢。

4 系統測試分析

系統開發完成后,本文分別利用Lucene和關系數據庫Sql Server 2005對10萬條文本數據進行了檢索測試。系統試驗環境中CPU為Intel Xeon 1.86 GHz,內存為三星4GB DDR3 ×2,操作系統為redhat 6.2 linux。測試選取100 000條文獻資料,在1 000、10 000、100 000數據規模下對Lucene和數據庫檢索分別進行了20次測試,取其平均值作為測試結果,結果如表2所示。

表2 Lucene與Sql Server性能對比

測試結果表明:基于Lucene的文獻資料全文檢索系統具有較好的時間和資源優勢,并且隨著文獻記錄數的增多,其優勢更加明顯。

5 結束語

本文在研究文獻全文檢索技術和Lucene系統架構的基礎上,設計了基于Lucene技術的文獻資料知識庫檢索系統,并進行了實際應用。研究結果表明:Lucene開放的體系架構使得其能夠方便地應用到文獻知識庫系統中;Lucene基于字典和倒排技術的索引和檢索技術使得系統能夠實現文獻資料的快速、準確檢索。相比于傳統的數據庫檢索方式,Lucene在性能和效率上具有明顯的檢索優勢。

[1]錢愛兵.全文檢索算法設計及全文檢索系統概述[J].現代圖書情報技術,2003(2):42-44.

[2]管建和,甘劍峰.基于Lucene全文檢索引擎的應用研究與實現[J].計算機工程與設計,2007(2):489-491.

[3]曹元大,賀海軍,涂哲明,等.全文檢索字索引技術的研究與實現[J].計算機工程,2002(6):260-262.

[4]孫西全,馬瑞芳,李燕靈.基于Lucene的信息檢索的研究與應用[J].情報理論與實踐,2006(1):125-128.

[5]肖創柏,李玉鑒,鄭廣順,等.基于全文檢索技術的商業信函處理系統的設計與實現[J].計算機應用研究,2004(1):150-152.

[6]蘇潭英,郭憲勇,金鑫.一種基于Lucene的中文全文檢索系統[J].計算機工程,2007(23):94-96.

[7]唐鐵兵,陳林,祝偉華.基于Lucene的全文檢索構件的研究與實現[J].計算機應用與軟件,2010(2):197-199.

[8]高磊.基于LUCENE的搜索引擎研究與實現[D].武漢:武漢理工大學,2007.

[9]王海濤,賈宗璞.基于Struts和Hibernate的Web應用開發[J].計算機工程,2011(9):112-114.

[10]郎小偉,王申康.基于Lucene的全文檢索系統研究與開發[J].計算機工程,2006(4):94-96.

[11]趙珂,逯鵬,李永強.基于Lucene的搜索引擎設計與實現[J].計算機工程,2011(16):39-41.

[12]夏天,黃文,馬駿濤,等.Lucene全文檢索軟件及其在學科信息服務平臺中的應用[J].圖書情報工作,2011(21):106-109.

[13]黃杰.基于Lucene的全文檢索系統模型的研究[D].廣州:暨南大學,2007.

[14]李曉麗,杜振龍.基于Lucence的個性化搜索引擎研究[J].計算機工程,2010(19):258-260.

猜你喜歡
用戶信息系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 国产成人精品2021欧美日韩| 91在线精品免费免费播放| 国产成人无码综合亚洲日韩不卡| 午夜免费小视频| 亚洲男人天堂网址| 国产色伊人| 最新国产你懂的在线网址| 青草视频久久| 午夜a视频| 亚洲人网站| 蜜臀AV在线播放| 国产成人亚洲精品无码电影| 日本亚洲国产一区二区三区| 四虎影视无码永久免费观看| 亚洲成年人片| 波多野结衣久久高清免费| 亚洲欧美精品日韩欧美| 日本精品中文字幕在线不卡| 精品国产aⅴ一区二区三区| 国产成在线观看免费视频| 99色亚洲国产精品11p| 91伊人国产| 国产精品七七在线播放| 看国产一级毛片| 国产精品美女免费视频大全| 国产在线观看第二页| 亚洲精品人成网线在线| 不卡色老大久久综合网| 波多野结衣第一页| 亚洲小视频网站| 国产永久免费视频m3u8| 久草青青在线视频| 精品撒尿视频一区二区三区| 天天综合网色中文字幕| 国产真实乱人视频| 国产v精品成人免费视频71pao| 一本无码在线观看| 欧美精品成人一区二区视频一| 久草热视频在线| 亚洲中文字幕无码mv| 免费观看国产小粉嫩喷水 | 国产成人精品高清不卡在线| 一级做a爰片久久毛片毛片| 在线播放真实国产乱子伦| 超碰免费91| 国产精品微拍| 自拍偷拍欧美日韩| 亚洲精品视频在线观看视频| 四虎成人免费毛片| 狼友视频国产精品首页| 亚洲不卡影院| 4虎影视国产在线观看精品| 亚洲嫩模喷白浆| 亚洲中文字幕手机在线第一页| 久久香蕉国产线| 伊人激情久久综合中文字幕| 呦女精品网站| 天堂网国产| 欧美午夜一区| 欧美区一区| 免费av一区二区三区在线| 欧美在线精品怡红院| 青青热久免费精品视频6| 久草性视频| 精品无码一区二区在线观看| 国产精品视频观看裸模| 大香网伊人久久综合网2020| 香蕉国产精品视频| 国产精品2| 呦女亚洲一区精品| 国产成人无码播放| 亚洲人成人伊人成综合网无码| 国产SUV精品一区二区| 色综合中文综合网| 一级不卡毛片| 成人国产精品视频频| 无码精油按摩潮喷在线播放| 国产人成在线观看| 国产一区二区三区精品欧美日韩| 色偷偷男人的天堂亚洲av| 国产欧美日韩综合一区在线播放| 欧美国产日本高清不卡|