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
主站蜘蛛池模板: 91精品免费高清在线| 国产办公室秘书无码精品| 高潮爽到爆的喷水女主播视频| 国产传媒一区二区三区四区五区| 午夜国产精品视频黄 | 波多野结衣久久高清免费| 青青热久免费精品视频6| 国产精品无码AV片在线观看播放| a级毛片在线免费| 国产成人成人一区二区| 91九色国产在线| 国产在线小视频| 成年人久久黄色网站| 国产成人综合在线观看| 毛片免费在线视频| 国产精品吹潮在线观看中文| 日韩精品无码免费一区二区三区 | 国产剧情国内精品原创| 成年午夜精品久久精品| 欧美精品另类| 91青草视频| 国产精品成人一区二区不卡 | 99久久国产综合精品女同| 欧美精品三级在线| 久久伊伊香蕉综合精品| 久久精品91麻豆| 一本久道久综合久久鬼色| 青青青伊人色综合久久| 99久久精品国产麻豆婷婷| 国产成年女人特黄特色大片免费| 成年人免费国产视频| Jizz国产色系免费| 性欧美在线| 五月天福利视频| 欧美性猛交xxxx乱大交极品| 国产成人h在线观看网站站| 精品无码日韩国产不卡av | 国产h视频在线观看视频| 日本不卡在线| 2021国产在线视频| 波多野结衣亚洲一区| a色毛片免费视频| 国产超薄肉色丝袜网站| 欧美日韩高清| 欧美另类视频一区二区三区| 欧美高清视频一区二区三区| 午夜电影在线观看国产1区| 欧美在线天堂| AV在线天堂进入| 一区二区午夜| 欧美一级片在线| 91伊人国产| 久久国产精品国产自线拍| 亚洲中文字幕国产av| 波多野结衣一二三| 亚洲国产91人成在线| 久草中文网| 久久久久亚洲精品无码网站| 操国产美女| 免费国产不卡午夜福在线观看| 亚洲欧洲AV一区二区三区| 国产爽歪歪免费视频在线观看 | 成人午夜福利视频| 色综合天天综合中文网| 亚洲一区二区三区国产精品 | 欧美亚洲第一页| 久久天天躁夜夜躁狠狠| 日韩欧美高清视频| 一级毛片视频免费| 国产激情在线视频| 国产av无码日韩av无码网站| 久久国产热| 亚洲第一精品福利| 精品无码人妻一区二区| www欧美在线观看| 国产菊爆视频在线观看| 国产亚洲欧美日韩在线一区| 国产理论最新国产精品视频| 色成人亚洲| 一本久道久久综合多人 | 国产亚洲美日韩AV中文字幕无码成人| 一级成人欧美一区在线观看|