- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 期 末 论 文
论文标题:Trie结构实现的英文搜索引擎
课程名称:高等数据结构与算法分析
课程编号:SF03014_01
学生姓名:李 鹤
学生学号:1108521204
所在学院:计算机科学与工程学院
学习专业:软件工程
课程教师: 周 娅
2012年02月27 日
一.系统概述
随着现代社会互联网的发展,搜索技术已经成为人们关注互联网信息不可或缺的一项技术。人们总是希望通过简简单单几个字就可以查询到自己关注的信息。早在1990年,蒙特利大学的学生Alan Emtage就开发了一个信息的搜索引擎---Archie,由于当时没有互联网,大家都是靠FTP进行传输的,所以此程序搜索的信息基于FTP的。到了1994年,Lycos出现才使搜索引擎具有了划时代的意义,其中的实现的网络爬虫可以帮助搜索引擎进行信息扩充。 1994年4月,yahoo的出现才标志着搜索引擎进入了迅速发展的膨胀期。此后,google,百度慢慢成为了搜索引擎行业的头老大。
此次课程设计重点就是完全模拟一个搜索引擎的全过程,从网络爬虫的设计,到网页信息的下载,处理,提取,把网页信息中的单词全部提取出来,通过这些单词建立一棵TRIE树,所有的单词都是建立在这棵树上,查询也是通过这棵trie进行的。
该搜索引擎主要分成两大部分:
网络爬虫,即从主站点下载寻所需要的网页内容到服务器硬盘上,并把下载的网页的物理地址和所在网站的URL地址关联起来,建立地址-链接索引表。
Trie树结构的实现,即通过java程序算法实现一棵可以自由查询单词的数据结构,在此之前需要对下载的网页进行内容的处理,满足需要之后,分词进行插入来完成一颗标准的trie树。
二.需求分析
2.1 任务概述
本次课程设计是实现一个搜索引擎,主要分成两个部分,一是网络爬虫部分,二是trie树的部分。网络爬虫主要实现的功能是通过多线程把一个站点的相应深度的网站地址连接全部下载一下来,再通过地址连接把相应的网站下载内容下载下来。这些网页在硬盘的地址需要和它的URL地址相应的联系起来,这样以便后面构造trie树的时候使用。同时在爬虫阶段,直接把所需要的网页下载到硬盘中。由于此引擎只是为了模拟,所以在搜索阶段只是把网页的内容进行检索,其他格式的的信息没有考虑在内。通过建立一张地址-URL表的文件,把网页在硬盘中的地址和其代表的URL地址连接起来。Trie树的构造阶段首先需要把HTML网页文件进行处理,那些布局用的标签语言全部清除掉,这些标签语言对于文件的信息帮助很少,但不是绝对,例如在以下标签中:
在name为Keywords的标签中,Content显示了该页面以及该网站的关键字,这些关键字能帮助网络爬虫最快的知道该页面显示什么内容。在大型的搜索引擎中,有选择式的爬行就通过这个标签的内容来决定是否需要爬行该网站。
标签语言的清除通过正则表达式的构造。程序中对标签的处理主要包括几个方面:script标签,style标签,html标签,特殊符号,过多的空格,以及一些制表符等。
Trie树的实现需要克服的问题有几项:1.trie节点的数据结构;2.如何遍历整棵树;3.如何确定该单词已经查到了;4.url地址链表怎样关联起来。
2.2任务目标
此次课程设计的任务主要在两个方面:一,通过网络爬虫把相应站点的相应层次内容下载下来并创建地址-UrL表;二,建立供查询用的Trie结构。
2.3输入要求
搜索引擎的输入方面主要有三个参数:
1)需要爬行的Url地址,必须是符合标准的地址,否则不能通过正则表达式的筛选;
2)需要爬行的深度,每个网站我们不需要完全爬行,完全爬行是很浪费资源的;
3)由于此系统的局限性,我们需要事先添加好需要查询的单词。
2.4环境描述
本系统采用的是java语言,jdk1.6平台。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
Java 中提供了对于网络编程众多的基础包和类,比如 URL 类、InetAddress 类 、正则表达式,这为我们的搜索引擎实现提供了良好的基础,使我们可以专注于 搜索引擎本身的实现,而不需要因为这些基础类的实现而分心。
概要设计
三 概要设计
3.1 基本设计概念与处理流程
首先通过URL爬虫程序对指
文档评论(0)