?

一種全文檢索系統的研究與實現

2017-06-01 12:20侯天峰陸亞祥
微型電腦應用 2017年5期
關鍵詞:全文檢索預覽分詞

侯天峰, 陸亞祥

(南京大學金陵學院 信息科學與工程學院,南京 210089)

一種全文檢索系統的研究與實現

侯天峰, 陸亞祥

(南京大學金陵學院 信息科學與工程學院,南京 210089)

網絡科技的飛速發展導致電子文檔的數量急劇膨脹,如何從大量的文檔中快速、準確的獲取所需內容成為一個當前研究的熱點。在MVC模式以及Lucene架構的基礎上,研究和實現了較為先進的全文檢索系統。系統擴展了檢索支持的文檔種類,改進了對檢索結果的展現及訪問方式,提高了檢索系統便捷性及性能。

Lucene; 全文檢索; 文檔解析; 預覽

0 引言

互聯網技術的發展,也是各種文本信息產生的過程。無論是查閱資料還是編輯文檔,其中文本信息是最基本和常用的信息形式,人們對文檔的處理越來越頻繁。如何從大量的文檔中快速、準確地獲取用戶需要的信息資料成為一個急需解決的問題。由此,促使了信息檢索系統的出現和迅速發展[1,2]。

數據檢索能夠快速定位、檢索各種信息資源,在人們的生活和工作中都發揮著重要的作用,信息檢索的核心技術是全文檢索技術[3]。法律情報檢索系統是世界第一個全文檢索系統,其由美國米德公司于1973 年發布[4],期間它得到了很多的改進,1959年剛被設計出來的時候僅僅用在了法律情報這一方面,面向的方向單一,系統功能也不是很完善。相對于西方國家,我國在全文檢索系統方面的起步較晚,由于中文是一種象形文字使得國外全文檢索軟件并不能很好地適用于我國用戶。國內開發中文全文檢索系統主要采用關系數據庫的形式對數據進行檢索[5],從嚴格意義上來講它并沒有真正地實現全文檢索的功能。

目前市場上有很多開源的檢索框架,如Egothor、Lucene、XQEngine等,Lucene[6]是Apache軟件基金會Jakarta項目組的一個子項目,是一個純Java編寫的開放源代碼的全文檢索工具[7]。它具有面向對象的特點,易于進行二次開發;在創建索引方面實現了分塊索引,提高了創建索引的效率;其支持多語言,可以針對不同的語言進行檢索,并實現了一套強大的查詢引擎,用戶無需自己編寫代碼即使系統可獲得強大的查詢能力等等,上述優點使得Lucene成為市場上最為流行的全文檢索工具。

1.1 系統結構

本文對全文檢索系統運行的基本原理和Lucene架構[8,9]進行了深入研究,熟悉了解系統結構、文件格式、數據流,并結合SSH(Spring+Sruts+Hibernate)框架,提供了一個基于MVC分層思想的全文檢索模型。

系統實現了用戶動態獲取待檢索文檔在Windows系統中的文檔路徑的功能,用戶可以根據自己文檔存放的位置進行選擇路徑以及創建檢索。Lucene本身只能對純文本文檔建立索引,由于信息的廣泛性和文檔的多樣性,通常情況下,獲得的數據源并非一般的純文本格式[10]。例如TXT、PDF、DOC、HTML等,本系統能夠對多種常見文檔進行檢索,檢索完成后實現了的在線預覽功能,更為全面便捷地以滿足用戶的不同需求。系統結構,如圖1所示。

2.2 中文分詞器的選擇

Lucene工具包提供了幾個分詞接口,如KeywordAnalyzer、StandardAnalyzer和PerFieldAnalyzerWrapper等分析器,但是這些分詞器中只有StandardAnalyzer是能夠對中文進行分詞,其他都是針對西方文字進行分詞的。目前針對中

圖1 系統結構

文分詞器的工具有:CJKAnalyzer、PaodingAnalyzer、IK_CAnalyzer等,其中PaodingAnalyzer在中文分詞耗時以及分詞結果等方面都更為出色,它對文檔進行細粒度全切分以及二次分詞,能夠幾乎把所有的子詞都拆出來,這樣用戶在查詢文檔時就能夠實現單字切分開進行查詢。所以從分詞效果、性能、擴展性、及可維護性等角度來綜合考量,本系統使用PaodingAnalyzer,以提高中文分詞的效率。

1.3 系統實現

1.3.1 文檔路徑選擇

系統使用了FileSystemView類提供的getFileSystemView()方法獲取Windows系的盤符,用于文檔磁盤的選擇,再通過File類提供的listFiles()方法對文件夾進行遍歷,實現了一個類似于選擇文件的選取框。從而實現了用戶對文檔路徑的選擇。示例核心代碼如下:

1.3.2 多類型文檔解析

Lucene只定義了一個抽象文檔的結構Document,沒有定義具體的數據源,按照條件查詢,得到所需要的結果。想要順利地被Lucene利用,需注意文檔以文字形式進行正確的抽取,Lucene才能對其進行索引以及搜索[11]。所以在對文檔進行創建索引之前要將各種不同的文檔進行內容提取,

并轉換成Lucene可以識別的Document結構,因此需根據文檔格式的不同通過其對應的轉換器進行文檔內容的轉換。例如POI組件可以實現對MS office格式文檔內容的獲取,HTMLParser組件可以實現對HTML格式文檔內容進行獲取,PDF格式文檔可以通過PDFBOX組件抽取。本文通過引用組件技術實現了對多種格式文檔的內容提取以及檢索,使得系統具有統一處理多格式文檔的能力。文檔解析模塊流程,如圖2所示。

圖2 文檔解析模塊流程

1.3.3 創建索引

在獲取和建立了有效的待搜索數據后,需要創建索引文件,然后就可以搜索文件。建立索引的步驟如下:

(1) 建立Field,就是包裝文檔中的不同數據;

(2) 將所有的Field存入一個文檔中,即包裝文章;

(3) 將數篇文字整合,將多個文檔組織到一個IndexWriter中去,即可形成索引文件。

本系統規定了Field字段包含:題目(filename)、路徑(path)、內容(content)。根據字段的屬性和輸出的要求,分別選取保存方式。

1.3.4 檢索文檔

當用戶進行查詢時,檢索程序根據已經建立的索引進行查找,并將查找的結果反饋給用戶[12]。在這一步驟中IndexSearcher是能夠對索引文件進行檢索的關鍵,由Query類封裝查詢字段、查詢詞和語言分析器,交由IndexSearcher類查詢。當通過Lucene提供給用戶的檢索接口檢索到含有檢索詞的文件時,接口程序將數據庫中對應文件名的所有記錄找到并顯示出來。檢索結果,如圖3所示。

圖3 檢索結果展示

1.3.5 在線預覽

考慮用戶瀏覽文檔的便捷性需求,系統實現了類似百度文庫的在線預覽功能。通過OpenOffice+JODConverter+Swftools+FlexPaper的方式完成,將DOC、TXT、PDF等格式的文檔轉換成swf格式的flash文檔,然后再通過flexpaper組件展示。

OpenOffice套件是一套office工具,構建于Sun的StarOffice代碼基礎上的開源產品,本文在該服務的基礎上對文檔進行格式的轉換。在此基礎上,通過JODConverter轉換器將文檔轉換為PDF格式的文檔,通過Swftools工具提供的pdf2swf.exe對生成的PDF格式文檔進行格式轉換,從而生成swf格式的flash文檔。

FlexPaper是開源輕量級的在瀏覽器上顯示swf格式文檔的組件,它與上述工具結合使得通過FlexPaper工具展現不同格式的文檔變得可能。以上組件的結合使用使得系統實現了極為便捷的在線預覽效果,當用戶想查看某一文檔時,無需多余操作,只需點擊檢索結果中的預覽按鈕即可,如圖4所示。

圖4 預覽效果展示

2 實驗

本文系統相較于傳統搜索服務,除了具有上述功能及便捷性方面的優勢外,在性能方面也具有優勢。文章選取Windows系統自帶的搜索功能、應用市場流行的多可文檔共享精靈與本文系統進行檢索效率的對比分析。開發及實驗軟硬件環境:CPU型號為酷睿i7-5500U 2.40GHz, 8GB內存,Windows 8.1系統。

首先與Windows系統的搜索功能進行比較。打開文檔所在文件夾,文檔包含多種格式,例如:DOC、TXT、PDF、HTML格式,文檔總大小為2.06MB。選擇對文檔名稱以及文檔內容的搜索,輸入搜索的文件名稱“大學”,搜索結果的部分截圖,如圖5所示。用時約1.5秒,本文系統對該文件夾下的相同文檔進行檢索,用時僅為736ms,在時間上優于Windows系統自帶搜索服務。另外從搜索結果圖可以看出,Windows搜索出的結果不會展示出文檔的內容,會給用戶帶來不便,本文系統則解決了這個問題。

圖5 Windows系統搜索結果圖

通過對多個文檔進行檢索,來比較本系統與多可文檔共享精靈的檢索效率搜索結果,如圖6所示。實驗準備兩個用來檢測的文件夾,分別包含9.06 MB和20 MB的DOC、TXT、PDF、HTML混合格式文檔。在對9.06 MB文件夾進行檢索時,本文系統用時672 ms,多可文檔共享精靈花費時間為736 ms,檢索結果的部分截圖如圖6所示。對20 MB文件夾檢索時,本系統用時1487 ms,多可文檔共享精靈用時為1638 ms。測試結果,如表1所示。

表1 對多個文檔檢索耗時比較

上述兩組實驗為混合格式的文檔檢索。第三組為兩份TXT格式的單一文檔檢索效率對比,兩份TXT文檔分別包含10萬與50萬字左右的漢字。檢索所用時間的測試結果,如表2所示:

圖6 多可文檔共享精靈檢索結果圖

由此可見,本文系統相對于傳統的檢索工具其功能及性能優勢。系統在實際使用過程中,能夠便捷高效地滿足用戶的檢索需求。

表2 對單個文檔檢索耗時比較

3 總結

文章在實現全文檢索的基礎上擴展了實用功能,實現了對文檔內容提取、文檔路徑選擇、多種類文檔檢索的支持、在線預覽等功能,更好地滿足了用戶的需求,并且系統在性能方面也具有一定的優勢,系統達到了預期的效果。后續會繼續研究相關改進:一是為檢索內容添加權重,分為文檔標題,文檔內容和文檔路徑;二是改進分詞技術,選用高性能的中文分詞器以進一步提高檢索的效率。

[1] 宋偉,彭智勇,王騫,等. Mimir:一種基于密文的全文檢索服務系統[J].計算機學報, 2014(5):1170-1183.

[2] 楊輝. 全文檢索和MVC用于井場數據服務系統[J]. 油氣田地面工程, 2014(11):73-74.

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

[4] 武毅. 基于 Lucene.Net的全文檢索研究與應用[D].長沙:國防科學技術大學,2011.

[5] Levitin A. Introduction to the Design & Analysis of Algorithms[M]. Reading, MA:Addison-Wesley, 2003.

[6] 徐葉強,朱艷輝,栗春亮.基于Lucene的海量數據庫全文檢索的設計與實現[J].湖南工業大學學報,2011.25(2):81-82.

[7] 黃江平,黃理燦,徐玲.基于Lucene的PDF文檔的全文檢索的實現[J].工業控制計算機, 2012,25(5):103.

[8] 義天鵬,陳啟安. 基于Lucene的中文分析器分詞性能比較研究. 計算機工程, 2012, 38(22):279-282.

[9] 秦杰,宋金玉,張廣星. 基于Lucene的本地搜索引擎研究與實現[J]. 計算機科學, 2014, 41(z2).

[10] 岳濤 .漢語自動分詞技術的最新發展及其在信息檢索中的應用[J].情報雜志,2005,24(004):55-57.

[11] Wu J X, Zhang S L, Chen H Q,et al. Mining Weighted Association Rules with Lucene Index[C]. Wireless Communications, Networking and Mobile Computing,2007. Wi Com 2007. International Conference on.IEEE,2007:3697-3700.

[12] 吳青,夏紅霞,趙廣輝,等.基于Lucene全文檢索引擎的應用與改進[J].武漢理工大學學報,2008,30(7):145-146.

Research and Implementation of a Full-text Retrieval System

Hou Tianfeng, Lu Yaxiang

(School of Information Science and Engineering, Nanjing University Jinling College, Nanjing 210089, China)

The rapid development of network technology has led to the rapid expansion of the number of electronic documents, how to quickly and accurately obtain the required content from a large number of documents has become a hot topic of current research. Based on MVC model and Lucene architecture, this system has been designed and implemented with a more advanced full-text retrieval performance. System extends the type of document retrieval support, improves the display and access method of the retrieval results, and improves the convenience and performance of the retrieval system.

Lucene; Full-text retrieval; Document analysis; Preview

侯天峰(1985-),男,廬江縣人,碩士,研究方向:圖像處理與分析。 陸亞祥(1990-),男,本科,專業方向:軟件工程。

1007-757X(2017)05-0052-04

TP311

A

2016.10.11)

猜你喜歡
全文檢索預覽分詞
新品預覽
分詞在英語教學中的妙用
結巴分詞在詞云中的應用
結巴分詞在詞云中的應用
11月在拍電視劇預覽表
Oracle數據庫全文檢索性能研究
全文檢索引擎Lucene系統模型與應用研究
全文檢索引擎技術在電子病歷中的應用
bauma China 2014展前預覽
聚焦現在完成進行時
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合