摘 要:本文基于Java體系開源框架Spring3.0、Struts2、Hibernate3.3和Compass2.1設計與實現了一個B/S模式的圖書文獻全文檢索系統,系統采用MVC框架,集成Spring3.0、Struts2、Hibernate3.3實現AOP以及事務管理、控制層、數據持久層,應用Compass實現索引的創建與數據庫同步更新,系統應用在圖書館海量圖書文獻的檢索中,比傳統的C/S模式的基于SQL的數據庫檢索系統,檢索結果的呈現要提高數倍,耗時為毫秒級。
關鍵詞:Java開源框架全文檢索索引
中圖分類號:G250文獻標識碼:A文章編號:1674-098X(2011)06(a)-0019-01
1 引言
C/S模式的軟件,客戶端需要安裝專用的軟件才能和服務器通信,只適用于局域網,需要針對不同的操作系統開發不同版本的軟件,產品更新換代快、維護代價高、執行效率低。對于擁有上百萬館藏資源的高校圖書館,讀者檢索數據,必須要到圖書館利用檢索機才可以,這在當今互聯網時代,這已經不能滿足讀者想隨時隨地通過網絡快速得到檢索數據的需求。
B/S模式是隨著Internet技術的興起迅速發展,能實現不同用戶從不同地點,以不同的接入方式訪問服務器,能有效地保護數據平臺和訪問權限,大大簡化了客戶端電腦載荷,減輕了系統維護與升級的成本。
全文檢索系統是按照全文檢索理論建立起來的用于提供全文檢索服務的軟件系統,需要具備建立索引和提供查詢的能力。功能上,全文檢索系統核心具有建立索引、處理查詢返回結果集、增加索引、優化索引結構等功能。結構上,全文檢索系統核心具有索引引擎、查詢引擎、文本分析引擎、對外接口等,加上各種外圍應用系統等共同構成了全文檢索系統。
2 全文檢索引擎
Lucene[1]是一個開放源代碼的全文檢索引擎工具包,具有索引文件格式獨立于應用平臺的特點。在實際全文檢索中,建立索引,要么是定期遍歷數據庫,調用索引建立程序模塊將里面的數據轉為索引,要么是每次更新數據的時候,調用索引建立程序模塊將里面的數據轉為索引,兩種方式的共同缺點是頻繁更新索引數據將使對硬盤的操作影響巨大。
Compass是對Lucene的封裝,其擴展了事務索引、搜索引擎抽象、對象關系映射、事務管理、不同的映射技術在數據庫存儲索引的功能。Compass[2]的模塊主要如圖1所示。
Compass提供了以下兩種途徑來完成事務管理代碼簡化操作。
(1)CompassTemplate,它使用流行的設計模式來抽象事務管理。
(2)與Spring事務管理器集成,可以在一個存在的事務中執行。
Compass通過OSEM(對象到搜索引擎映射)可以輕松地和Hibernate、Spring等無縫集成,索引庫能夠隨數據持久層同步更新。
3 系統實現
3.1 創建搜索對象
Hibernate[3]是數據持久化事實上的標準,功能強大、性能優秀,與Compass通過注解方式創建OSEM對象模型,通過Compass抽象出需要的屬性,然后把它們對應的元數據插入到搜索引擎索引中。
Book類對象搜索實體,代碼如下:
@Entity
@Table
@Searchable
public class Book
{
@SearchableProperty
private String title;
@SearchableProperty
private String content;
……
}
在搜索對象模型的建立中,需要過濾網頁樣式得到純文本,用于在搜索結果中顯示圖書文獻摘要信息。
3.2 索引的創建與更新
Compass Spring主要完成Compass和Spring的集成,在系統的application Context-compass.xml文件配置Compass。Compass內核是Lucene,對中文處理可以采用單字分詞和雙字分詞,本系統采用了雙字分詞方法實現對中文文本分詞處理,這樣可以保障高效的分詞索引速度。
Compass Gps集成不同的數據源,通過Hibernate的ORM實現,通過hibernate GpsDevice使得數據庫中的記錄變化后,可以使用Hibernate3事件系統支持的實時數據鏡像來自動同步更新索引。
3.3 分頁搜索模塊實現
系統采用Struts2[4]實現控制器,調用數據持久層的搜索模塊實現搜索,以分頁的形式顯示在視圖層,進行測試,搜索耗用的時間僅僅為0.01秒,文獻的標題和摘要都以高亮的形式顯示。
4 結 語
對于一個擁有海量數字資源的圖書館來說,讓用戶快速地、方便地、精準地查找到需要的圖書或者文獻,是圖書館資源檢索的迫切需求,本文分析了Java體系開源框架設計與實現了一個B/S模式的具體跨平臺、跨數據庫的搜索引擎,與傳統的數據庫檢索相比,大大減少了圖書館工作人員的工作量,方便了讀者查詢圖書館資源,讀者不必到圖書館就可以通過網絡查詢資料,檢索結果以毫秒級的耗時快速呈現給讀者。
參考文獻
[1]Apache Lucene. Apache Lucene - Overview [EB/OL].2010.
[2]Compass-Java Search Engine Framework.overview [EB/OL].2010.
[3]李剛.輕量級J2EE企業應用實踐[M].北京:電子工業出版社.2007(6).