基于 Ajax+Lucene 构建搜索引擎的设计与实现
摘 要
通过搜索引擎从互联网上获取有用信息已经成为人们生活的重要组成部分,
Lucene 是构建搜索引擎的其中一种方式。搜索引擎系统是在.Net 平台上用 C#开
发的,数据库是 MSSQL Server 2000。主要完成的功能有:用爬虫抓取网页;获
取有效信息放入数据库;通过 Lucene 建立索引;对简单关键字进行搜索;使用
Ajax 的局部刷新页面展示结果。
论文详细说明了系统开发的背景,开发环境,系统的需求分析,以及功能的
设计与实现。同时讲述了搜索引擎的原理,系统功能,并探讨使用 Ajax 与服务
器进行数据异步交互,从而改善现有的 Web 应用模式。
关键词:Lucene.net;异步更新;Ajax;搜索引擎
The Design and Implementation for Constructing the Search
Engine with Ajax and Lucene
Abstract
Obtaining useful information from web by search engines has become the
important part of people's lives. Lucene is the way of constructing search engine. This
system is based on the .Net platform using C#. The database is MSSQL Server 2000.
Main functions are grasping web pages with crawls, adding effective information to
the database, establishing index with Lucene, searching through keywords, and
displaying the results finally.
This paper has showed the principle of search engine in the form of different
modules, functions of this system, improving traditional web application model using
Ajax. It shows explanation of the system’s background, development environment,
system analysis of demanding, and functions of design.
Key words: Lucene.net; Asynchronous update; Ajax; Search engines
目 录
论文总页数:19 页
1 引言 ...............................................................................................................................................1
1.1 课题背景............................................................................................................................1
1.2 国内外研究现状................................................................................................................1
1.3 本课题研究的意义............................................................................................................1
1.4 本课题的研究方法............................................................................................................1
2 Lucene.net 构建搜索引擎原理......................................................................................................2
2.1 全文搜索引擎....................................................................................................................2
2.1.1 搜索引擎的分类 .....................................................................................................2
2.1.2 搜索引擎的工作原理 .............................................................................................2
2.2 LUCENE 与搜索引擎..........................................................................................................3
2.3 索引和搜索........................................................................................................................4
2.4 AJAX 技术............................................................................................................................4
3 需求分析 .......................................................................................................................................5
3.1 同步环境............................................................................................................................5
3.2 功能需求 ............................................................................................................................6
3.3 性能需求............................................................................................................................6
3.4 输入输出要求....................................................................................................................7
3.5 运行需求............................................................................................................................7
4 方案设计 .......................................................................................................................................7
4.1 搜索引擎模型....................................................................................................................7
4.2 数据库的设计....................................................................................................................7
4.3 模块设计............................................................................................................................8
5 系统实现 .....................................................................................................................................10
5.1 开发环境..........................................................................................................................10
5.2 关键代码详解..................................................................................................................10
5.2.1 代码结构 ...............................................................................................................10
5.2.2 爬虫部分 ...............................................................................................................11
5.2.3 索引生成 ................................................................................................................12
5.2.4 页面查询 ................................................................................................................13
6 测试 .............................................................................................................................................14
6.1 功能测试..........................................................................................................................14
结 论 .........................................................................................................................................16
参考文献 .........................................................................................................................................17
致 谢 .........................................................................................................................................18
声 明 .........................................................................................................................................19
第 1 页 共 19 页
1 引言
1.1 课题背景
Lucene 是一个基于 Java 的全文信息检索工具包,它为应用程序提供索引和
搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为
流行的基于 Java 开源全文检索工具包。Lucene 是 Java 世界中常用的索引 API,
使用它提供的方法可以为文本资料创建索引,并提供检索。Lucene.net 它只在命
名方面采纳了.Net 的建议,主要目标倾向于和 Java Lucene 兼容:一个是索引格
式兼容,达到可以共同工作的目的;一个是命名接近(只相差很少,比如大小写
等),目的是可以方便开发者使用 Java Lucene 相关的代码和资料。
1.2 国内外研究现状
国内外对搜索引擎研究比较著名的便是 Google 了。无论搜索技术本身还是
搜索范围与深度,Google 搜索总是所有搜索引擎的目标。Google 专业领域搜索
方面做的成效是有目共睹的。Google 在低层次的智能搜索方面已经开始研究很
多年了,实际的成果就是翻译方面。利用搜索技术,加上经验主义发展出来的
Google 翻译机器人,在外语翻译方面已经比传统的翻译好很多了。但是翻译仅
仅是学术方面的应用,更重要的是 Google 建立起来的海量搜索历史记录。如果
把这些海量搜索历史记录当作是词典的话,那么如果与搜索技术的结合发展成为
低层次的只能搜索,那么应用就将大大加强与广泛。
国内,对搜索引擎的专注和对中文的理解能力也是中国本土搜索引擎行业独
特的竞争力。国内比较著名的比如百度,更专注对中文的处理。中文的意思多种
多样,是很难用程序处理的。目前国内外都在做中文引擎,门户网站、非门户网
站也都在进军搜索业,成立搜索门户。为了满足用户更深层次的需求,国内的搜
索引擎也在不断的完善自己。如何将人类的知识和智能加入到检索中,如何使搜
索引擎的质量产生一个质的飞跃,也是国内搜索引擎努力的方向。中国网民对智
能化搜索需求也是显而易见的。这也意味着搜索不再是简单的技术或者是网络导
航而已,而是会成为普通人生活中必备的工具之一。
1.3 本课题研究的意义
随着计算机技术和互联网技术的飞速发展,网络上的信息量急剧增长,要在
浩如烟海的网络世界中寻找需要的信息,作为现代信息获取技术的主要应用,那
么搜索引擎是必不可少的。通过 Lucene.net,可以很方便的构建起搜索引擎,本
毕业设计除了考查使学生综合运用以前所学知识的能力,同时也使学生了解当今
搜索及编程的一些新技术,并模拟简单的搜索引擎开发。
1.4 本课题的研究方法
在本系统的开发过程中,首先分析了搜索引擎的相关功能,写出需求分析;