1、基于 Ajax+Lucene 构建搜索引擎的设计与实现 摘 要 通过搜索引擎从 互联网上 获取有用信息 已经成为 人们生活的重要组成部分, Lucene 是构建搜索引擎的其中一种方式 。 搜索引擎 系统 是在 .Net 平台上用C#开发的 , 数据库是 MSSQL Server 2000。主要完成的功能 有 : 用 爬虫抓取网页;获取有效信息放入数据库; 通过 Lucene 建立索引;对简单关键字进行搜索;使用 Ajax 的局部刷新页面 展示 结果 。 论文详细说明了系统开发的背景,开发环境,系统的需求分析,以及功能的设计与实现。 同时 讲述了 搜索引擎的原理, 系统 功 能 ,并 探讨 使用
2、 Ajax 与服务器进行数据异步 交互 , 从而 改善 现有的 Web 应用模式。 关键词 : L; 异步更新 ; 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 peoples lives. Lucene is the way of constructin
3、g 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. Thi
4、s 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 systems background, development environment, system analysis of demanding, and functions of design. Key wo
5、rds: L; Asynchronous update; Ajax; Search engines 1 引言 1.1 课题背景 Lucene 是一个基于 Java 的全文信息检索工具包,它为应用程序提供索引和搜 索功能。 Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。 Lucene 是 Java 世界中常用的索引 API,使用它提供的方法可以为文本资料创建索引,并提供检索。 L 它只在命名方面采纳了 .Net 的建议,主要目标倾向于和 Java Lucene 兼容:一个是索引格式兼容,达到可以共同工作的目的;一个
6、是命名接近(只相差很少,比如大小写等),目的是可以方便开发者使用 Java Lucene 相关的代码和资料。 1.2 国内外研究现状 国 内 外 对搜 索引擎研究比较著名的 便 是 Google 了。 无论搜索技术本身还是搜索范围与深度 , Google 搜索 总是所有搜索引擎的 目标 。 Google 专业领域搜索方面 做 的 成效是有目共睹 的 。 Google 在低层次的智能搜索方面已经开始研究很多年了,实际的成果就是翻译方面。利用搜索技术,加上经验主义发展出来的Google 翻译机器人,在外语翻译方面已经比传统的翻译好很多了。但是翻译仅仅是学术方面的应用,更重要的是 Google 建立
7、起来的海量搜索历史记录。如果把这些海量搜索历史记录当作是词典的话,那么如果与搜索技术的结合发展成为低层次的只能 搜索,那么应用就将大大加强与广泛。 国内 , 对搜索引擎的专注和对中文的理解能力也是中国本土搜索 引擎行 业独特的竞争力。 国内比较著名的比如 百度 ,更专注对中文的处理。 中文的 意思多种多样 , 是很难用程序处理的 。 目前国内外都在做中文引擎,门户网站、非门户网站也都在进军搜索业,成立搜索门户 。为了 满足用户更深层次的需求 ,国内 的搜索引擎也在不断的完善自己。如何 将人类的知识和智能加入到检索中,如何 使搜索引擎的质量产生一个质的飞跃 ,也是国内搜索引擎努力 的 方向。 中
8、国网民对智能化搜索需求 也是显而易见的。 这也意味着搜索不再是简单的技术或 者是网络导航而已,而是会成为普通人生活中必备的工具之一。 1.3 本课题研究的意义 随着计算机技术和互联网技术的飞速发展,网络上的信息量急剧增长,要在浩如烟海的网络世界中寻找需要的信息,作为现代信息获取技术的主要应用,那么搜索引擎是必 不 可少的。通过 L,可以很方便的构建起搜索引擎,本毕业设计除了考查使学生综合运用以前所学知识的能力,同时也使学生了解当今 搜索 及编程的一些新技术,并模拟 简单的 搜索 引擎开发。 1.4 本课题的研究方法 在本系统的开发过程中,首先分 析 了 搜索引擎 的相关功能 , 写出需求分析
9、;其次,综合运用以前所学的相关知识(数据 库, C 等),选择所熟悉的开发工具进行开发(本系统选择了 Microsoft Visual Studio .NET 2003 作为开发平台,开发语言选择了 C#;数据库采用 Microsoft SQL Server 2000) 。 由于 Lucene不是完整的搜索引擎程序 , 只为搜索引擎应用提供了工具包 , 在 A 平台中,可使用 L 这个对 Lucene 兼容的库 。 使用 L 协助 完成搜索引擎相关的网页爬虫与抓取,为文档建立索引,关键词搜索的功能,通过 Ajax 优化系统,完成页面的局部刷新功能,给用户好的体验。 2 L 构建 搜索引擎原 理
10、 2.1 全文 搜索引擎 2.1.1 搜索引擎的分类 获得网站网页资料,能够建立数据库并提供查询的系统,我们都可以把它叫做搜索引擎。 真正意义上的搜索引擎,通常指的是收集了因特网上几千万到几十亿个网页并对网页中的每一个词(即关键词)进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。在经过复杂的算法进行排序后,这些结果将按照与搜索关键词的相 关度排列 。 按照工作原理的不同,可以把它们分为两个基本类别:全文搜索和分类目录。 全文搜索引擎 通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用
11、户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户 。 从搜索来源的角度,全文搜索引擎又可细分为两种,一种是拥有自己的检索程序( Indexer),俗称 “ 蜘蛛 ”( Spider) 程序或 “ 机器人 ” ( Robot)程序,并自建网页数据库,搜索结果直接从自身的数据库中调用;另一种则是租用其他引擎的数据库,并按自定的格式排列搜索结果 。 分类目录则 是通过人工的方式收集整理网站资料形成数据库的,比如雅虎中国以及国内的搜狐、新浪、网易分类目录。另外,在网上的一些导航站点,也可以归属为原始的分类目录。 2.1.2 搜索引擎的工作原理 搜索引擎的原理,可以 看作 三步:从互联网上
12、抓取网页 , 建立索引数据库 ,在索引数据库中搜索。 全文搜索引擎的 “ 网络蜘蛛 ” 能够扫描一定地址范围内的网站,并沿着网络上的链接从一个网页到另一个网页,从一个网站到另一个网站采集网页资料。它为保证采集的资料最新,还会回访已抓取过的网页。网络机器人或网络蜘蛛采集的网页,还要有其它程序进行分析, 根据一定的相关度算法进行大量的计算建立网页索引,才能添加到索引数据库中。我们平时看到的全文搜索引擎,实际上只是一个搜索引擎系统的检索界面,当你输入关键词进行查询时,搜索引擎会从庞大的数据库中找到符合该关键词的所有相关网页的索引,并按一定规则呈现给我们。不同的搜索引擎,网页索引数据库不同 , 搜索结
13、果也就不尽相同。 利用能够从互联网上自动收集网页的 Spider 程序,自动访问互联网,并沿着 网页中的所有 URL 爬到其它网页,重复这过程,并把爬过的所有网页收集回来。 然后 建立索引数据库 , 由分析索引程序对收集回来的网页进行分 析,提取相关网页信息(包括网页所在 URL、编码类型、页面内容包含的关键词、关键词位置、 生成时间、大小、与其它网页的链接关系等) ,然后用这些相关信息建立网页索引数据库。 接下来 在索引数据库中搜索排序 , 当用户输入关键词搜索后,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。最后,由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织
14、起来返回给用户。搜索引擎只能搜到它网页索引数据库里储存的内容。 2.2 Lucene 与搜索引擎 Lucene 是一个全文信息检索工具包,为应用程序提供索引和搜索功能。 和Java Lucene 兼容 的 L 可以用在 .net 平台。 Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的, Lucene 就能对你的文档进行索引和搜索。比如你要对一些 HTML 文档, PDF 文档进行索引的话你就首先需要把 HTML 文档和 PDF 文档转化成文本格式的,然后将转化后的内容交给 Lucene 进行索引,然后把创建好的索引文件保存到磁盘或者内存中,最后根据用户
15、输入的查询条件在索引文件上进行查询。不 规 定要索引的文档的格式也使 Lucene 能够适用于 几乎 所有的搜索应用 程序。 如 图 1 表示了搜索应用程序和 Lucene 之间的关系,也反映了利用 Lucene构建搜索应用程序的流程: 图 1 应用程序和 Lucene 2.3 索引和搜索 索引是现代搜索引擎的核心,建立索引 是把数据 源 处理成非常方便查询的索引文件的过程。为什么索引这么重要呢,试想你现在要在大量的文档中搜索含有某个关键词的文档,那么如果不建立索引的话你就需要把这些文档顺序的读入内存,然后检查这个文章中是不是含有要查找的关键词,这样的话就会耗费非常多的时间,想想搜索引擎可是在
16、毫秒级的时间内查找出要搜索的结果的。这就是由于建 立了索引的原因,你可以把索引想象成这样一种数据结构,他能够使你快速的随机访问存储在索引中的关键词,进而找到该关键词所关联的文档。 Lucene 采用的是一种称为反向索引( inverted index)的机制。反向索引就是说我们维护了一个词 /短语表,对于这个表中的每个词 /短语,都有一个链表描述了有哪些文档包含了这个词 /短语。这样在用户输入查询条件的时候,就能非常快的得到搜索结果。我们将在本系列文章的第二部分详细介绍 Lucene 的索引机制,由于 Lucene 提供了简单易用的 API,所以 也可以非常容易的使用 Lucene对文档实现索
17、引 的建立 。 对文档建立好索引后,就可以在这些索引上面进行搜索了。搜索引擎首先会对搜索的关键词进行解析,然后再在建立好的索引上面进行查找,最终返回和用户输入的关键词相关联的文档。 2.4 Ajax技术 Ajax 全称为 “Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。 Ajax 技术是目前在浏览器中通过 JavaScript 脚本可以使用的所有技术的集合。包括: HTML 和 CSS, 使用文档对象模型 DOM 作动态显示和 交互 , 使用 XML 做数据交互和操作 , 使用XMLHttp
18、Request 进行异步数据接收 , 使用 JavaScript 将它们绑定在一起 。 Ajax 技术之中,核心的技术就是 XMLHttpRequest,它最初的名称叫做XMLHTTP,是微软公司为了满足开发者的需要, 1999 年在 IE5.0 浏览器中率先推出的。后来这个技术被上述的规范命名为 XMLHttpRequest。它正是 Ajax技术之所以与众不同的地方。简而言之, XMLHttpRequest 为运行于浏览器中的JavaScript脚本提供了一种在页面之内与服务器通信的手 段。页面内的 JavaScript可以在不刷新页面的情况下从服务器获取数据,或者向服务器提交数据。XMLH
19、ttpRequest 的出现为 Web 开发提供了一种全新的可能性,甚至整个改变了人们对于 Web 应用由什么来组成的看法。它可以使我们以一种全新的方式来做 Web 开发,为用户提供更好的交互体验。 传统的 web 应用模型 如 图 2: 图 2 Web 应用模型 与传 统的 Web 开发不同 , Ajax 并不是以一种基于静态页面的方式来看待Web 应用的。从 Ajax 的角度看来 , Web 应 用应由少量的页面组成,其中每个页面其实是一个更小型的 Ajax 应用。每个页面上面都包括有一些使用 JavaScript开发 的 Ajax 组件。这些组件使用 XMLHttpRequest 对象以
20、异步的方式与服务器通信,从服务器获取需要的数据后使用 DOM API 来更新页面中的一部分内容。因此 Ajax 应用与传统的 Web 应 用的区别主要在三个地方: 1. 不刷新整个页面,在页面内与服务器通信。 2. 使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。 3. 系统 仅由少量页面组成。大部分交互在页面之内完成,不 需要切换整个页面。 由此可 见, Ajax 使得 Web 应用更加动态,带来了更高的智能,并且提供了表现能力丰富的 Ajax UI 组件。 3 需求分析 3.1 同步环境 本系统的同步环境如图 3: 用户操作后等待 . 服务器端处理 客户端页面 处理
21、 新的页面呈现 数据提交 数据返回 因 特 网检 索 服 务 器图 3 同步环境 检索服务器通过 Internet 检索 Web 页面 。 3.2 功能需求 本设计要实现的功能: 1. 能够对 Internet 上的网页 内容、标题、链接等信息按链式收集 。 2. 能够实现一定 链接 深度的 网页收集 ,也就是在 Internet 上实现一定的 URL级的数据 收录 。 3. 对收集到的 数据存入 MSSQL Server 2000 等关系型数据库中、或者存入文本文件中。 4. 网站信息库中的信息会不断的变动 ,对收集到的数据需要定期的自动维护,做到定期的删除、从新收集。 5. 对收集到的数据
22、进行关键词的检索。 6. 对检索出的数据要可定位性 , 即可以 显示 对数据的出处的链接。 7. 实现中英文分词功能 , 能够按中文或者英文单词检索数据。 8. 实现无刷新的显示搜索结果 , 对搜索用时的计算、显示,关键字高亮显示等。 9. 逻辑搜索功能比如“中国” AND“北京” AND NOT(“海淀区” AND“中关村”)。 3.3 性能需求 1. 精度 : 1.1 对 收集到的信息需要一定的完整性,即对链接层次里的每个链接页面都能够收集得到,并写入收集的存储区里。 1.2 对搜索出的内容需要包含有关键字信息 2. 时间特性要求: 2.1 数据收集时,因为是对 Internet 网上 W
23、eb 信息的收集,并且采用 URL级链式的网页收集。收集数据时不能够出现无响应的等待。 2.2 搜索时响应时间应不超过 3 秒,无论搜索的记录多少。 3. 灵活性 3.1 具有良好的中文切词功能。 3.4 输入输出要求 输入: 搜索的关键字 。 处理: 去前后空格,关键字,查询索引库。 输出: Web 页面上显示搜索信息。 3.5 运行需求 1 硬件环境需求 : 需要使用 专用服务器, P4 以上, 512M 以上内存, 80G 以上硬盘; Internet网络连接。 2 软件环境: 源 端: Windows 2003/XP 操作系统、 MSSQL Server 2000 数据库、 IIS5.
24、0、 .NET Framework1.1。 4 方案 设计 结合前面的同步原理,以及需求的介绍,下面给出同步的方案设计 。 4.1 搜索引擎 模型 模型包括 爬虫 、 索引 生成 、查询 以及 系统 配置 部分 。 爬虫 包括: 网页 抓取模块 、 网页减肥 模块 、 爬虫维持 模块 。 索引生成 包括 : 基于文本文件的索引 、基 于数据库的索引 。 查询 部分 有 Ajax、后台处理 、前台界面 模块 。 如图 4 所示。 图 4 系统模块 4.2 数据库的设计 本课题包含一张 用于 存放 抓取回来的网页 信息 如表 1。 表 1 网页 数据 存储 表 逻辑字段名 物理字段名 字段类型 是
25、否为空 主键 外键 说 明 编号 ID int NOT NULL Yes 自增加 地址 Url Varchar(50) NOT NULL 内容 Content VARCHAR(1000) NOT NULL meta标签内容 Mata Varchar(100) NOT NULL 网页标题 Title Varchar(100) NOT NULL 创建时间 Createdate Datetime(8) NOT NULL 4.3 模块设计 该模型按照功能划分为 三 个部分,一是 爬虫 抓取网页部分 ,二是 从数据库建立 索引 部 分 ,三是 从前台页面 查询 部 分 。系统的功能流程 (如 图 5.1 和 5.2)。 输 入 一 个 U R L结 果 列 表启 动 爬 虫 程 序 使 用 L u c e n e . n e t 文 档 类建 立 文 档 索 引不 断 的 抓 取 网 页写 入 数 据 库去 掉 多 余 标 签获 取 有 效 记 录页 面 上 输 入 关 键 字使 用 L u c e n e . n e t 搜 索 类是 否 成 功YA J A X图 5.1 功能流程图
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。