搜索引擎的设计与实现

本文介绍了搜索引擎的发展历程,从第一代到第三代搜索引擎的技术演进。项目设计部分讲解了搜索引擎的基本构成,包括网络机器人(Spider)和索引数据库。项目实现中,使用Java和Lucene库构建了Spider程序,实现了网页抓取和索引。文章还提供了源代码示例,包括Spider类和索引建立、删除的类。
摘要由CSDN通过智能技术生成

一、项目背景

面对浩瀚的网络资源,搜索引擎为所有网上冲浪的用户提供了一个入口,毫不夸张的说,所有的用户都可以从搜索出发到达自己想去的网上任何一个地方。因此它也成为除了电子邮件以外最多人使用的网上服务。

搜索引擎技术伴随着WWW的发展是引人注目的。搜索引擎大约经历了三代的更新发展:

第一代搜索引擎出现于1994年。这类搜索引擎一般都索引少于1000000个网页,极少重新搜集网页并去刷新索引。而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。在实现技术上也基本沿用较为成熟的IRInformation Retrieval)、网络、数据库等技术,相当于利用一些已有技术实现的一个WWW上的应用。在19943月到4月,网络爬虫World Web Worm (WWWW)平均每天承受大约1500次查询。

大约在1996年出现的第二代搜索引擎系统大多采用分布式方案(多个微型计算机协同工作)来提高数据规模、响应速度和用户数量,它们一般都保持一个大约50000000网页的索引数据库,每天能够响应10000000次用户检索请求。199711月,当时最先进的几个搜索引擎号称能建立从2000000100000000的网页索引。Altavista搜索引擎声称他们每天大概要承受20000000次查询。

2000年搜索引擎2000年大会上,按照Google公司总裁Larry Page的演讲,Google正在用3,000台运行Linux系统的个人电脑在搜集Web上的网页,而且以每天30台的速度向这个微机集群里添加电脑,以保持与网络的发展相同步。每台微机运行多个爬虫程序搜集网页的峰值速度是每秒100个网页,平均速度是每秒48.5个网页,一天可以搜集超过4000000网页

搜索引擎一词在国内外因特网领域被广泛使用,然而他的含义却不尽相同。在美国搜索引擎通常指的是基于因特网的搜索引擎,他们通过网络机器人程序收集上千万到几亿个网页,并且每一个词都被搜索引擎索引,也就是我们说的全文检索。著名的因特网搜索引擎包括First SearchGoogleHotBot等。在中国,搜索引擎通常指基于网站目录的搜索服务或是特定网站的搜索服务,本人这里研究的是基于因特网的搜索技术。

 

二、项目设计

搜索引擎是根据用户的查询请求,按照一定算法从索引数据中查找信息返回给用户。为了保证用户查找信息的精度和新鲜度,搜索引擎需要建立并维护一个庞大的索引数据库。一般的搜索引擎由网络机器人程序、索引与搜索程序、索引数据库等部分组成。

 

WWW

文档

网络机器人程序

建立Lucene索引

从数据库中搜索信息

Tomcat服务器

Lucene索引数据库

WWW浏览器

WWW浏览器

JSP

网络机器人程序

 

 

 

 

 

 

 

 

 


系统结构图

网络机器人也称为“网络蜘蛛”(Spider),是一个功能很强的WEB扫描程序。它可以在扫描WEB页面的同时检索其内的超链接并加入扫描队列等待以后扫描。因为WEB中广泛使用超链接,所以一个Spider程序理论上可以访问整个WEB页面。

    为了保证网络机器人遍历信息的广度和深度需要设定一些重要的链接并制定相关的扫描策略。

在同一时间URL只能在一个队列中,我们把它称为URL的状态。

发现URL

等待队列

运行队列

完成队列

错误队列

完成URL

以上的图表示了队列的变化过程,在这个过程中,当一个URL被加入到等待队列中时Spider程序就会开始运行。只要等待队列中有一个网页或Spider程序正在处理一个网页,程序就会继续他的工作。当等待队列为空并且当前没有任何网页时,Spider程序就会停止它的工作。

在构造Spider程序之前我先了解下程序的各个部分是如何共同工作的。以及如何对这个程序进行扩展。流程图如下所示:

URL加入等待队列

Spider程序工作完成

等待队列中是否有URL

下载从等待队列中得到的网页,并将他送入运行队列中。

这个网页包含其他超级连接吗?

将这一网页送入完成队列并继续

查看网页上的下一个超连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值