1、 本 科 毕 业 论 文 基于 Lucene 的全文检索系统的研究与实现 Research and Implementation of a Chinese Search Engine Based on Lucene 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 校内指导教师: 年 月I 摘 要 随着电子化信息系统与网络通讯技术的蓬勃发展,人们进入了一个信息爆炸的时代。人们在享受获取信息的便捷的同时,也面临着一个如何在海量的数据库信息中准确、快捷地找到有用的信息的问题,因此如何在海量信息中去其糟粕,取其精华,成为了当下的研究热点。 面对存储庞大数据量的数据库,管
2、理起来存在诸多的问题,主要体现在索引建立复杂、搜索速度慢,对于特别目标数据搜索的 SQL 语句复杂。针对这类问题,本文通过对搜索引擎的原理、组成、数据结构和工作流程等方面深入研究的基础上,运用 Lucene 索引技术来完善以上问题。 Lucene 采用倒排序法建立索引,并能记录索引与数据之间的映射关系,根据索引命中率高低来实现搜索结果排序。 全文先详细介绍了构建基于 Lucene 的全文检索系统所需的主要技术支持,包括 Lucene 框架、 IK 中文分词器、 JDBC、 SSH 架构、 JSP,并通过对这些技术的使用,实现一个简单的数据库搜索系统雏形,通过实例验证了基于 Lucene 的全文
3、检索系统实现的可行性。该系统界面友好、搜索效率高、命中率好,采用面向对象的编程思想使系统具有很好的延伸性和扩展性。具有一定的 实用价值和运用前景。 关键 词 : Lucene;数据库;索引;全文检索; II Abstract With the electronic information system and development of network communication technology flourishing, people entered the era of an information explosion. People enjoy the convenience of
4、 access to information while also facing a problem that is how to accurately and quickly find the useful information from the massive database, so how in the mass information to its dregs, its essence, become the immediate hotspot. When managing the huge amount of data stored in the database, there
5、are many problems, mainly reflected in the complex index-founding and slow search, the target data for the particular search complex SQL statements. For such problems, this article, based on in-depth research of search engine principle, components, data structures and workflow, use Lucene indexing t
6、echnology to perfect the above problems. Lucene index with inverted ordering method, and can record the mapping relationships between index and data, and arrange search results by the index hit ratio. This article introduces the key technical support required of building the full text retrial system
7、 based on Lucene in detail, including the Lucene framework, IK Analyzer, JDBC, SSH framework, JSP, and through the use of these technologies to achieve a simple database search systemprototype, this example verifies the feasibility, which is to implement a Lucene full-text retrieval system. The syst
8、em is user-friendly, search efficiency, hit rate is good, object-oriented programming ideas so that the system has good extensibility and scalability. It has certain practical value and application of prospects. Key words: Lucene; Database; Index; full-text search; III 目 录 第一章 绪论 . 1 1.1 研究背景 . 1 1.
9、2 课题研究意义 . 1 1.3 课题研究目的 . 2 第二章 全文检索系统相关技术 . 3 2.1 搜索引擎概述 . 3 2.2 相关技术介绍 . 4 2.2.1 Lucene API. 4 2.2.2 IK Analyzer. 8 2.2.3 JDBC 技术 . 10 2.2.4 数据库技术 . 10 2.2.5 JSP 技术 . 10 2.2.6 SSH 框架 . 11 第三章 系统总体设计 . 12 3.1 系统设计目标 . 12 3.1.1 设计要求 . 12 3.1.2 运行环境 . 12 3.2 索引设计 . 13 3.2.1 索引架构 . 13 3.2.2 索引文档的预处理 .
10、 13 3.2.3 索引域的设计 . 14 3.3 系统数据结构 . 14 3.3.1 数据流分析 . 14 第四章 系统实现 . 16 4.1 系统流程图 . 16 4.2 系统预处理 . 16 4.2.1 系统环境配置 . 16 IV 4.2.2 原始数据录入 . 18 4.3 系统包设计 . 20 4.4 索引建立 . 21 4.4.1 源数据抓取 . 21 4.4.2 中文分词 . 23 4.4.3 索引库建立 . 25 4.5 系统功能实现 . 27 4.5.1 用户接口 . 27 4.5.2 关键字 高亮显示 . 29 4.5.3 搜索结果返回 . 29 第五章 系统测试和运行结果
11、 . 32 5.1 系统测试 . 32 5.1.1 测试目的 . 32 5.1.2 测试用例设计 . 32 5.2 运行结果 . 34 第六章 总结与展望 . 37 6.1 论文总结 . 37 6.2 存在的问题和改进 . 37 参考文献 . 39 致 谢 . 41 V Contents Chapter 1 Preface. 1 1.1 Research background . 1 1.2 Significance of the research . 1 1.3 Research purpose . 2 Chapter 2 Related technology . 3 2.1 Search
12、engine overview . 3 2.2 Related technical introduction . 4 2.2.1 Lucene API. 4 2.2.2 IK Analyzer . 8 2.2.3 JDBC technology . 10 2.2.4 Database technology . 10 2.2.5 JSP technology . 10 2.2.6 SSH framework. 11 Chapter 3 System overall design . 122 3.1 Design objectives . 122 3.1.1 Design requirements
13、 . 122 3.1.2 Operating environment . 122 3.2 Index design . 133 3.2.1 Index structure. 133 3.2.2 Pretreatment of the document index . 133 3.2.3 Design of the index domain . 144 3.3 System data structure . 144 3.3.1 Data flow analysis . 144 Chapter 4 System implementation . 166 4.1 System flow chart
14、. 166 4.2 System pretreatment . 166 4.2.1 System environment configuration . 166 VI 4.2.2 The original data entry . 188 4.3 System package design . 200 4.4 Indexing . 211 4.4.1 Source data capture . 211 4.4.2 Chinese segment . 233 4.4.3 Index base established. 255 4.5 System function . 277 4.5.1 Use
15、r Interface . 277 4.5.2 Keyword highlight . 29 4.5.3 Search results . 29 Chapter 5 System test and operation results . 322 5.1 System test . 322 5.1.1 Testing purposes. 322 5.1.2 Test case design. 322 5.2 Run results . 344 Chapter 6 Summary and future works . 377 6.1 Summary of this paper . 377 6.2
16、Improvements and future works . 377 References . 39 Acknowledgements. 411 第一章 绪论 1 第一章 绪论 1.1 研究背景 在信息化建设浪潮中,催生了大量的来自内部和外部信息资源。据了解,在企业中,数据每年以 200%的速度增长,其中 80%的数据以文件、邮件、图片等非结构化数据形式存放在企业内计算机系统中的各个角落,而这些数据总量远远超过了互联网信息的总量。随着数据库系统的不断升级和发展,对于数据的存储性能已经有了革命性的提高。但数据检索的情况并不尽如人意,传统的数据库搜索存在着以下几个问题: 1. 信息量大时速度慢的
17、问题 比较常用的数据库有: Oracle、 MySQL、 MS SQL 等,这些都是支持标准 sql92语法的数据库,数据库的重点功能在存储,对于数据量达到千万级的时候,再执行 sql 语法的速度将会变得很慢,特别是执行含有 like 的 select 语句时,比如一个采用 mysql存储的客户信息表数据记录达到 500 万行以上时,就算增加再多的索引,采用标准 select 语句执行查询时,所需时间至少也在 2 分钟以上, Oracle数据库虽然可以采用分区,或采用 Oracle 的内置函数如 instr 来辅助查询,时间也在 1 分钟以上。 2. 信息形式多 不同行业的信息库往往涵盖不同类
18、型的数据,如新闻库,可能就会分很多类别,如:互联网、应用 软件、通信等,每类可能由一个表或一个段来组织,并且有可能会涉及到各个表,不但包括文字、图片、图表和视频等多种形式的信息资源,而且涵盖了其他语言的信息资源。 3. 信息结构不一样 针对有很多信息系统,并且数据库不同,又是用不同语言开发的,查询 A 信息要去 A 系统,查询 B 类信息又要去 B 系统查询,一是不方便查询,二是重复的数据多,没法充分的利用这些已有的数据资源。 1.2 课题研究意义 在深入了解搜索原理的基础上,利用 Lucene 框架技术来实现对数据库信息的全文检索。 Lucene 的工作流程是:在遍历数据库表单数据的情况下,
19、 首先对基于 Lucene 的全文检索系统的研究与实现 2 于这些字段字符串采取分词处理,将长串字符分成单个词单元;再者对单词建立索引,同时将建立的索引与数据库信息建立一对多的映射关系。通过倒排序法 1建立索引,使用户在查询时通过索引关键字能搜索到包含此关键字的数据源。应用 Lucene 技术进行数据库全文检索有以下的几个优点 2: 1. 索引文件格式独立于应用平台: Lucene 定义了一套以 8 位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。 2. 在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索 引速度。然后
20、通过与原有索引的合并,达到优化的目的。 3. 优秀的面向对象的系统架构,使得对于 Lucene 扩展的学习难度降低,方便扩充新功能。 4. 设计了独立于语言和文件格式的文本分析接口,索引器通过接受 Token 流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。 5. 已经默认实现了一套强大的查询引擎,用户无需自己编写代码即使系统可获得强大的查询能力, Lucene 的查询实现中默认实现了布尔操作、模糊查询、分组查询等等。 1.3 课题研究目的 在对搜索引擎的原理、组成、数据结构和工作流程等方面深入研 究的基础上,详细介绍展示相关的核心技术,并将其应用于数据库全文检索当
21、中。解决传统数据库索引建立耗时、冗余、查询不便的问题。通过实例程序演示来展现基于 Lucene的全文检索系统的可行性和功能性。 第二章 全文检索系统相关技术 3 第二章 全文检索系统相关技术 2.1 搜索引擎概述 一个完整的搜索引擎通常由 5 个环节构成,包括数据源的抓取、数据内容分析、索引的建立、检索结果排序、检索工具与用户接口。因此,系统的实现上,主要的功能模块也按照此五类划分 : 1. 数据源抓取:该模块的主要功能就是遍历数据库库表单获取内容。对于数据量庞大的数据库来说,要保证 时间复杂度在允许的范围内。该模块是系统良好运行的开端。 2. 数据内容分析:针对获取的数据源,通常都是以字符串
22、为内容的文本结构,系统对其进行预处理,通过分词器对字符串的切分,将其划分为单元词组。该模块是建立索引的前提,并且在系统的重要程度仅次于索引建立。分词是否符合自然语言规范直接影响了索引的建立,从而间接影响了搜索的命中率。 3. 索引建立:对分析好的数据内容进行索引建立,索引的本质即用户进行搜索的关键字。通过建立索引,系统在索引与信息文档之间建立一对多、多对多的映射关系。良好的索引策略是搜索系统时间复杂度的根本保障 和支持,对于加快搜索速度和更准确的信息定位有着重要的支撑。 4. 检索结果排序:对检索结果进行排序。目的是为了对信息的有效性进行验证。一般一个索引会对应多个表单数据,通过对元数据的命中率进行权值比较,置顶热门、有效的信息,并对重复链接和冗余信息进行排除,尽可能达到最终呈现给用户的信息最优。 5. 网络检索工具及接口:用户接口用于为用户提供查询的入口以及信息反馈的平台。良好的用户检索接口应该充分遵循人机交互的理论和方法。通过对用户键入信息的及时关联,达到接口 界面友好,提高系统智能性。 整个系统的基本框架及工作原理如图 2.1 表示: