APP下载

一种全文检索系统的研究与实现

2017-06-01侯天峰陆亚祥

微型电脑应用 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展前预览
聚焦现在完成进行时