网站大量收购独家精品文档,联系QQ:2885784924

网络搜索引擎的设计和各部件的实现.docVIP

网络搜索引擎的设计和各部件的实现.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络搜索引擎的设计和各部件的实现.doc

网络搜索引擎的设计和各部件的实现   0 引言      随着互联网技术的飞速发展,互联网中的信息量也越来越大,如何更加有效地利用这些信息资源,已经越来越受到人们的关注。互联网中存在的信息来源十分广泛,与此同时,存在的形式也是多种多样,包括图像、文本、视频、音频等不同的形式,面对着不同来源,不同形式的海量信息,如何准确、快速地找到自己所需要的信息成为我们在使用互联网时候所面临的一个问题,因此,开发一个搜索引擎就非常必要。目前,成熟的搜索引擎如 Lycos、Yahoo、Google、百度等各有优点,如 Google 比 Yahoo 能更快、更准确搜索到所需信息,百度中文搜索引擎支持网页信息检索,图片,Flash,音乐等多媒体信息的检索等,而本文搜索引擎的开发是通过网络爬虫抓取信息,然后再通过一定的技术对网页信息进行提取、处理,将抓取到的信息存放在索引数据库中,通过一些查询接口实现信息检索,帮助用户在海量的信息中迅速地、准确地找到用户真正感兴趣的信息。      1 搜索引擎的设计      1.1 搜索引擎结构设计      搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。      搜索引擎主要包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。全文搜索引擎是目前广泛应用的主流搜索引擎。它可以对被索引的文章中的每一个词建立索引,在用户检索时,检索程序就会根据事先建立好的索引进行查找,并将查找的结果反馈给用户。本文的主要工作就是使用 Java 设计并实现了一个 Web 全文搜索引擎,搜索引擎结构设计如图 1 所示: .      1.2 网络蜘蛛结构设计      创建搜索引擎的第一步就是要设计一个程序在海量的互联网信息中漫游,并抓取网页信息。这个程序被称为网络蜘蛛,网络蜘蛛也被称为自动搜索机器人,它主要用于分析网页上的每一个超链接,并根据超链接链到其他网页中的超链接,网络蜘蛛结构设计如图 2 所示:.      1.3 索引器结构设计      搜索引擎对网络蜘蛛抓取到的网页信息进行整理,这一过程称为“创建索引”。索引器结构设计如图 3 所示:      1.4 检索器结构设计      搜索引擎每时每刻都要收到来自大量用户的几乎是同时发出的查询,它按照每个用户的要求检查自己的索引,在极短时间内找到用户需要的资料。检索器结构设计如图 4所示:      2 网络蜘蛛的实现      2.1 网络蜘蛛爬行策略实现算法      互联网可以看成一个超级大的“图”,网络蜘蛛的遍历网页算法采用图的宽度优先遍历(BFS)算法,其爬行策略实现算法如下:.      1)将入口 URL 入队至待访问 URL 的队列中去。      2)URL 从待访问 URL 队列出队,使用开源 HTML 解析库 HTMLParser 对给出的入口 URL 进行解析,判断抓取到的 URL 是否在已访问 URL 集合中,若不在,则将 URL存储在待访问 URL 的队列中去(入队),若存在则什么也不做。      3)使用 HTMLParser 对出队的 URL 进行解析,解析该URL 的标题、内容、关键词、创建时间等信息。      4)使用 Lucene 为 HTMLParser 解析到的网页信息创建索引。      5)出队的 URL 添加至已访问 URL 集合中去。      6)重复(2)~(5)的过程。      2.2 网络蜘蛛的具体实现      (1)数据结构:队列和散列表(哈希表)      首先要构建用于存储抓取到的URL待访问的URL队列,在构建队列时需要考虑以下两方面因素:      1)队列中将要存储的元素个数非常之多并且数量无法确定;2)在队列的队头和队尾处经常进行删除和添加操作。      针对以上两点,使用 java 集合类 LinkedList 的链式存储结构来实现未访问 URL 队列。这个未访问 URL 队列主要用来存储爬虫抓取到的 URL,通过一系列的出队入队操作实现对网页的宽度优先遍历。      (2)要构建散列表。在根据未访问 URL 队列对 URL进行抓取和解析的时候,还需要一个数据结构散列表来存储已经访问过的URL来避免对同一个URL的重复抓取和解析。      在 URL 从未访问队列出队以后,首先,判断一下,它有没有在这个数据结构中,只有当该 URL 不在这个已访问 URL集合中时才对其进行其他操作。否则,将该 URL 丢弃。这个数据结构需要具有以下两个特点:      1)结构中存储的 URL 不可以重复。      2)由于 URL 数量众多,考虑到查找性能

您可能关注的文档

文档评论(0)

zhangningclb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档