APP下载

基于KySou的全文检索系统的分析与优化

2014-07-12肖捷

东莞理工学院学报 2014年3期
关键词:全文检索内存检索

肖捷

基于KySou的全文检索系统的分析与优化

肖捷

(东莞理工学院 计算机学院,广东东莞 523808)

全文检索是基于Web的信息搜索的关键技术,文章从基于KySou的全文检索系统的实现机制入手,深入分析了全文检索系统的工作原理、系统组成及API接口设计,并就全文检索系统的优化进行探讨,包括索引过程优化和搜索过程优化。

KySou;全文检索;索引优化;搜索优化

全文检索是一个非常有效的信息检索技术,它极大地提高了从海量数据中查找特定信息的效率。随着Internet的飞速发展,基于Web的全文检索技术正得到日益广泛的应用,像Alta Vista、Excite、InfoS-eek、Google、Baidu、KySou等这些典型的检索工具对Web文档信息的查询起到了巨大作用。但是,这些系统都存在一些局限性,有待进一步提高。因此,研究分析全文检索技术非常必要。

1 全文检索系统的深入分析

外部查询模块是基于Web的应用系统的重要组成部分,通过提供功能强大的搜索引擎,能够从海量资料库中快速找出所需的所有相关资料,为用户提供方便、快捷的信息资料查询服务。全文检索是外部查询模块的关键技术,下面以暂住人口与出租屋综合信息管理系统中的全文检索系统为例,深入分析了全文检索系统的实现机制,并就全文检索系统的优化设计进行探讨。

1.1 实现机制

全文检索就是索引程序通过扫描资料源,逐词建立索引并标记该词在资料源中出现的位置和次数,检索程序依据索引进行查找,反馈查找结果给用户[1]。通常包括按字检索和按词检索两种方法,按字检索就是针对资料源逐字建立索引,检索时需要将词分解为字,再按字检索。不同语言,字的含义不同,西文字词合一,中文字组成词。按词检索就是针对资料源逐词建立索引,检索时按词检索[2]。西方文字按空格分词,实现过程类似按字方式,实现容易较为。东方文字必须进行字词切分,才能按词索引。字词切分是全文检索技术的难点。

全文检索系统建立在全文检索理论基础上,一般具有索引和查找两大功能,索引功能包括建立索引、增加索引和优化索引结构等。查找功能包括检索条件分析、索引匹配、匹配结果排序、结果输出等。组成结构通常包括索引引擎、查询引擎、文本分析引擎、对外接口及外围应用系统等。工作原理如图1所示。

通常全文检索系统API接口设计比较通用,输入输出结构类似数据库表、记录和字段,许多传统应用中的文件或数据库等都能方便地映射到存储结构/接口,因此,全文检索系统可以看作是个支持全文索引的数据库系统。表1列出了全文检索系统与数据库系统间的对照关系。

图1 全文检索系统工作原理

全文检索

数据库

表1 全文检索实现与数据库对照表

1.2 优化设计

全文检索系统的优化:使用B树结构来维护索引是大部分基于数据库的搜索引擎的常用方法,索引更新会导致大量输入和输出操作(文件I/O是一件非常消耗资源的事情),索引效率较低。因此,全文检索系统必须进行优化设计,在保证不影响检索效率的前提下,提高索引和搜索的效率。通常可以从索引过程优化和搜索过程优化两方面着手。

1.2.1 索引过程优化

索引可以有两种实现方式:小批理索引扩展和大批量索引重建。由于索引过程需要进行大量的文件I/O,非常消耗资料。实质上,并非每次新的DOC文档加入都需要重新进行一次索引文件的IO操作,可以对索引过程进行优化。

索引过程优化思想:充分利用内存,降低文件IO频率,提升索引速度。也即,索引操作先在内存完成,再按照合适的批量间隔值完成文件IO操作。因此,批量间隔值的选择非常关键,一般来说,批量间隔值与内存占用成正比,与文件IO频率成反比,与索引速度成正比。也就是说,批量间隔值越大,占用内存就越多,但文件IO频率就越小。相反,批量间隔值越小,占用内存就越少,文件IO频率就越大,索引速度就越慢。下面以KySou为例,探讨索引过程的优化。

在KySou索引器IndexWriter中,MERGE-FACTOR就是一个与批量间隔值相关的关键参数,可以根据应用环境的具体情况调整MERGE-FACTOR参数,达到加快索引速度的目标,从而实现索引过程的优化。根据作者本人的经验,KySou索引器IndexWriter的MERGE-FACTOR参数的默认值是20(即:每索引20条记录,文件IO一次),如果将该参数扩大50倍,可以提升索引速度近2倍。当然,调整MERGE-FACTOR参数值应根据具体的应用环境,而且应不断优化调整。

1.2.2 搜索过程优化

支持内存索引的全文检索系统与基于文件I/O的全文检索系统相比较,虽然搜索速度有数量级的提升。但搜索过程优化能进一步提升搜索速度,因此,探讨搜索过程的优化也非常必要。

搜索过程优化思想:①尽量减少创建IndexSearcher。②尽量减少搜索结果的前台缓存。④自动过滤掉匹配度低的搜索结果。下面以KySou为例,探讨搜索过程的优化。

KySou面向全文检索的优化在于首次索引检索后,并不将检索到的全部记录(Document)的具体内容都读取出来,而只把匹配度最高的前100条结果的ID缓存到结果集。比较数据库检索:如果数据库检索结果集包含10,000条记录,那么数据库必须在取得所有记录内容后再返回结果集,即使结果集中的匹配总数很多,内存占用也不至太多。但针对绝大多数(超过90%)的模糊检索应用,一般在头100条记录中便可得到满足。如果首批缓存结果达不到检索要求,那么IndexSearcher将再次检索并且生成比上次搜索缓存数大1倍的缓存,并重新向后抓取。依此类推,直到满足检索要求。在搜索过程中,可以采用分级缓存策略来缓存结果记录,以达到充分利用首次缓存结果且不浪费多次检索的目标。另外,KySou还使用自动过滤掉匹配度低的结果记录的策略,进一步对搜索过程进行优化,效果极好。

2 结论

在信息检索领域,全文检索是一个非常有效的新型检索技术,它克服了传统索引检索在多文献集合和复杂条件下检索效率低的不足,极大地提高了从海量数据中查找特定信息的效率。但是,全文检索仍然存在一些问题,一方面,全文检索技术的理论基础还不够完备;另一方面,中文检索的特殊性和难度。因此,如何进一步优化设计全文检索系统,提高检索效率和吞吐量是一个值得研究的问题?本文仅起抛砖引玉作用。

[1] 苏新宁.信息检索理论与技术[M].北京:科学技术文献出版社,2004:99-100.

[2] 李宇,吴俊杰.开放源代码的全文检索引擎Lucene[M].北京:中国人民大学学报,2005:6-7.

Analysis and Optimization of Full Text Retrieval System Based on KySou

XIAO Jie

(Computer College,Dongguan University of Technology,Dongguan 523808,China)

Full Text Retrieval is a key technirue based on Web’s information search.Starting from the implementation mechanism of Full Text Retrieval system based on KySou,this paper conducts a detailed analysis onthe operational principle,components of the system and API interface design.Besides,it also probes into how to optimize the Full Text Retrieval system,which includes the optimizations of the indexing process and the searching process.

KySou;the Full Text Retrieval;optimization of indexing;optimization of searching

TP312

符:A

1009-0312(2014)03-0025-03

2014-06-03

广东省高等学校教学质量与教学改革工程本科类项目(粤教高函〔2012〕123号);东莞理工学院教学改革项目(莞工教[2012]33号);东莞理工学院教学改革项目(莞工教[2011]65号)。

肖捷(1966—),男,副教授,硕士,主要从事网络与数据库技术、企业ERP技术等方面研究。

猜你喜欢

全文检索内存检索
“春夏秋冬”的内存
Oracle数据库全文检索性能研究
专利检索中“语义”的表现
内存搭配DDR4、DDR3L还是DDR3?
全文检索引擎Lucene系统模型与应用研究
全文检索引擎技术在电子病历中的应用
基于内存的地理信息访问技术
国际标准检索
国际标准检索
上网本为什么只有1GB?