毕业设计(论文)-搜索引擎的设计与实现.doc_第1页
毕业设计(论文)-搜索引擎的设计与实现.doc_第2页
毕业设计(论文)-搜索引擎的设计与实现.doc_第3页
毕业设计(论文)-搜索引擎的设计与实现.doc_第4页
毕业设计(论文)-搜索引擎的设计与实现.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学校代码: 10128学 号: 040201015 本科毕业设计说明书题 目:搜索引擎的设计与实现学生姓名:学 院:信息工程学院系 别:计算机专 业:计算机科学与技术班 级:计算机04-2指导教师: 副教授 工程师二 八 年 六 月内蒙古工业大学本科毕业设计说明书摘 要为了适应网络信息的飞速增长,并且能够迅速、方便地从网络中获取有效信息, 搜索引擎逐渐走进了人们的生活,“竹竹”搜索引擎系统在这样的条件下,应运而生。本文首先系统的介绍了搜索引擎的概念、发展历史、和搜索引擎的分类。使读者能够初步了解搜索引擎技术。然后,详细介绍了“竹竹”搜索引擎系统。“竹竹”搜索引擎是基于Web的,面向笔记本电脑品牌的搜索引擎。系统的前端以MVC模式来实现,Spring做中间层,JDBC作后端来开发实现的。本系统分为三个子模块,抓取模块实现的功能为:将web上的海量网页抓取到系统中;采用的实现方法是使用Heritrix来完成对网页的抓取。处理模块实现的功能为:解析网页,提取其中的有用内容,为网页建立词库,由于笔记本电脑的品牌名在现有词库中不存在,因此要建立其特有的词库文件,对解析网页生成的信息文件进行分词,并建立索引,将索引存入数据库中;采用的实现方法是:通过Lucene的API来实现对网页内容的建索,使用HTMLParser的API实现了对网页内容的解析。用户模块实现的主要功能是:用户模块是系统的用户接口,用户通过此模块完成与系统的交互,当用户在查询界面上输入要检索的品牌信息后,系统将在可以接受的时间内,返回用户所需的结果集;采用的实现方法是:通过DWR封装了AJAX技术,处理用户请求;通过Lucene的API来实现检索。关键词:搜索引擎;Lucene;HeritrixAbstractIn order to adapt to the rapid growth of information networks, and can quickly and easily access to information from the network, search engines gradually come into peoples lives, zhuzhu search engine system is builded in such conditions. This paper first introduced the system,the concept of search engines, the development of history, and search engines category. So that readers can understand the search engine technology. Then, details of the zhuzhu search engine system. zhuzhu search engine is a Web-based, brand-oriented notebook computer search engine. The front-end system is made by model MVC, Spring to the middle layer, JDBC for the back-end . The system is divided into three sub-module, crawl module for the realization of the functions: Massive on the web page to crawl into the system; using the method is used to running Heritrix. Processing module for the realization of the functions: Analysis of the page, which extract useful content, pages thesaurus, because the brand of notebook computers available in the thesaurus does not exist, to establish its unique lexicon documents, analysis of the page Information generated by Word documents, and index, the index will be deposited in the database; method is used: Lucene API to achieve the content of the cable construction, the use of the API HTMLParser achieve the web content analysis. User module to achieve the main functions are: the user module is the user interface, the user through the completion of this module interactive system, when a user interface for input to the brand information retrieval system, the system will be acceptable time, Back to the user requirements set of results; using the method is: through the package the DWR AJAX technology, processing user requests through the Lucene API to achieve search. Key words: search engine; Lucene; Heritrix目 录引 言2第一章 课题背景21.1搜索引擎的概念21.2搜索引擎的发展历史31.2.1搜索引擎的起源31.2.2第一代搜索引擎41.2.3第二代搜索引擎41.2.4当前著名的搜索引擎简介41.3搜索引擎的分类51.3.1全文索引51.3.2目录索引61.3.3元搜索引擎61.3.4垂直搜索引擎61.3.5其他非主流搜索引擎形式6第二章 系统需求分析82.1搜索引擎的工作原理82.2系统功能需求82.3系统性能需求9第三章 系统总体设计103.1“竹竹”搜索引擎系统总体介绍103.2系统模块介绍123.2.1 模块功能介绍12第四章 系统详细设计174.1模块总体介绍174.2抓取子模块184.2.1运行Heritrix子模块184.2.2分析网页子模块234.3处理子模块274.3.1解析网页子模块274.3.2创建词库子模块284.3.3生成持久化类子模块284.3.4创建Document子模块294.4.5存储数据子模块334.4用户子模块334.4.1搜索页面344.4.2详细信息页面34结 论35参考文献36谢 辞372引 言 随着互联网的不断发展和日益普及,信息技术的不断发展,网上的信息量在爆炸性增长,这已经深入到了人们生活的各个方面,改变了人们生活方式和思维方式,方便了全球信息资源共享。在2004年4月,全球Web页面的数目已经超过40亿,中国的网页数估计也超过了3亿。要在如此浩瀚的海洋里寻找信息,就像“大海捞针”一样,能有一种工具使我们可以迅速找到我们想要的内容吗?答案是“有”,这就是搜索引擎。著名的因特网搜索引擎包括Baidu、Google、Sohu等。由于笔记本电脑的使用和风靡,有关笔记本电脑的检索也随之增多。因此,为了使用户能够更加简单,快捷的检索笔记本电脑,“竹竹”搜索引擎系统实现了这种需求。搜索引擎(Search Engine)就是指在WWW(World Wide Web)环境中能够响应用户提交的搜索请求,返回相应的查询结果信息的技术和系统,是互联网上的可以查询网站或网页信息的工具。它包括信息搜集、信息整理和用户查询三部分。“竹竹” 搜索引擎系统实现了自动将Web上的海量网页抓取到本地。然后解析网页,提取其中的有用内容,为网页建立词库(由于笔记本电脑的品牌名在现有词库中不存在,因此要建立其特有的词库文件),对解析网页生成的信息文件进行分词,并建立索引,将索引存入数据库中。“竹竹” 搜索引擎系统为用户提供了简洁的查询页面,用户通过此界面完成与系统的交互。当用户在查询界面上输入要检索的品牌信息后,系统将在可以接受的时间内,返回用户所需的结果集。因此,本系统实现了搜索引擎的基本功能,能够使用户可以简单,快捷,精确的对笔记本电脑品牌进行检索。36内蒙古工业大学本科毕业设计说明书第一章 课题背景1.1搜索引擎的概念由于网络信息的飞速增长,我们不得不面对浩瀚的网络资源,这极大地改变了人们获取信息的方式, 面对浩如烟海的网络信息, 如何才能迅速、方便地获取有效信息, 日益成为人们关心的问题, 搜索引擎的出现极大地缓解了这一矛盾。它为所有网上冲浪的用户提供了一个入口,毫不夸张的说,所有的用户都可以从搜索出发到达自己想去的网上任何一个地方。因此它也成为除了电子邮件以外最多人使用的网上服务。搜索引擎是一种应用在Web上的,为用户提供检索服务的软件系统, 它以一定的策略在Web上搜集和发现信息, 并对信息进行分析、提取、组织等处理后形成供检索用的数据库。从使用者的角度看,这种软件系统提供一个网页界面,让他通过浏览器提交一个词语或者短语,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法通常根据网页中关键词的匹配程度,出现的位置/频次,链接质量等计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。这个与用户输入内容相关的信息列表(常常会是很长一个列表,例如包含1万个条目)。这个列表中的每一条目代表一篇网页,至少有3个元素: (1)标题:以某种方式得到的网页内容的标题。最简单的方式就是从网页的标签中提取的内容。(尽管在一些情况下并不真正反映网页的内容)。(2)URL:该网页对应的“访问地址”。有经验的Web用户常常可以通过这个元素对网页内容的权威性进行判断,例如上面的内容通常就比(某个假想的个人网站)上的要更权威些(不排除后者上的内容更有趣些)。 (3)摘要:以某种方式得到的网页内容的摘要。最简单的一种方式就是将网页内容的头若干字节(例如512)截取下来作为摘要。 通过浏览这些元素,用户对相应的网页是否真正包含他所需的信息进行判断。比较肯定的话则可以点击上述URL,从而得到该网页的全文。搜索引擎提供信息查询服务的时候,它面对的只是查询词。而有不同背景的人可能提交相同的查询词,关心的是和这个查询词相关的不同方面的信息,但搜索引擎通常是不知道用户背景的,因此搜索引擎既要争取不漏掉任何相关的信息,还要争取将那些“最可能被关心”的信息排在列表的前面。这也就是对搜索引擎的根本要求。除此以外,考虑到搜索引擎的应用环境是Web,因此对大量并发用户查询的响应性能也是一个不能忽略的重要性能指标。1.2搜索引擎的发展历史1.2.1搜索引擎的起源所有搜索引擎的祖先,是1990年由Montreal的McGill University三名学生(Alan Emtage、Peter Deutsch、Bill Wheelan)发明的Archie(Archie FAQ)。Alan Emtage等想到了开发一个可以用文件名查找文件的系统,于是便有了Archie。Archie是第一个自动索引互联网上匿名FTP网站文件的程序,但它还不是真正的搜索引擎。Archie是一个可搜索的FTP文件名列表,用户必须输入精确的文件名搜索,然后Archie会告诉用户哪一个FTP地址可以下载该文件。世界上第一个Spider程序,是MIT Matthew Gray的World wide Web Wanderer,用于追踪互联网发展规模。刚开始它只用来统计互联网上的服务器数量,后来则发展为也能够捕获网址(URL) 1.2.2第一代搜索引擎第一代搜索引擎出现于1994年。这类搜索引擎一般都索引少于1,000,000个网页,极少重新搜集网页并去刷新索引。而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。在实现技术上也基本沿用较为成熟的IR(Information Retrieval)、网络、数据库等技术,相当于利用一些已有技术实现的一个WWW上的应用。1994年4月,斯坦福大学的两名博士生,美籍华人杨致远和David Filo共同创办了Yahoo!。随着访问量和收录链接数的增长,Yahoo目录开始支持简单的数据库搜索。因为Yahoo!的数据是手工输入的,所以不能真正被归为搜索引擎,事实上只是一个可搜索的目录。Yahoo!中收录的网站,因为都附有简介信息,所以搜索效率明显提高。1.2.3第二代搜索引擎大约在1996年出现的第二代搜索引擎系统大多采用分布式方案(多个微型计算机协同工作)来提高数据规模、响应速度和用户数量,它们一般都保持一个大约50,000,000网页的索引数据库,每天能够响应10,000,000次用户检索请求。1997年11月,当时最先进的几个搜索引擎号称能建立从2,000,000到100,000,000的网页索引。Altavista搜索引擎声称他们每天大概要承受20,000,000次查询。2000年搜索引擎2000年大会上,按照Google公司总裁Larry Page的演讲,Google正在用3,000台运行Linux系统的个人电脑在搜集Web上的网页,而且以每天30台的速度向这个微机集群里添加电脑,以保持与网络的发展相同步。每台微机运行多个爬虫程序搜集网页的峰值速度是每秒100个网页,平均速度是每秒48.5个网页,一天可以搜集超过4,000,000网页搜索引擎一词在国内外因特网领域被广泛使用,然而他的含义却不尽相同。在美国搜索引擎通常指的是基于因特网的搜索引擎,他们通过网络机器人程序收集上千万到几亿个网页,并且每一个词都被搜索引擎索引,也就是我们说的全文检索。著名的因特网搜索引擎包括FirstSearch、Google、HotBot等。1997年8月,Northernlight搜索引擎正式现身。它曾是拥有最大数据库的搜索引擎之一,它没有Stop Words,它有出色的Current News、7100多出版物组成的Special Collection、良好的高级搜索语法,第一个支持对搜索结果进行简单的自动分类。1.2.4当前著名的搜索引擎简介 1998年10月之前,Google只是斯坦福大学(Stanford University)的一个小项目BackRub。1995年博士生Larry Page开始学习搜索引擎设计,于1997年9月15日注册了的域名,1997年底,在Sergey Brin和Scott Hassan、Alan Steremberg的共同参与下,BachRub开始提供Demo。1999年2月,Google完成了从Alpha版到Beta版的蜕变。Google公司则把1998年9月27日认作自己的生日。Google以网页级别(Pagerank)为基础,判断网页的重要性,使得搜索结果的相关性大大增强。Google公司的奇客(Geek)文化氛围、不作恶(Dont be evil)的理念,为Google赢得了极高的口碑和品牌美誉。2006年4月,Google宣布其中文名称“谷歌”,这是Google第一个在非英语国家起的名字。1996年8月,sohu公司成立,制作中文网站分类目录,曾有“出门找地图,上网找搜狐”的美誉。随着互联网网站的急剧增加,这种人工编辑的分类目录已经不适应。sohu于2004年8月独立域名的搜索网站“搜狗”,自称“第三代搜索引擎”。2000年1月,两位北大校友,超链分析专利发明人、前Infoseek资深工程师李彦宏与好友徐勇(加州伯克利分校博士后)在北京中关村创立了百度(Baidu)公司。2001年8月发布B搜索引擎Beta版(此前Baidu只为其它门户网站搜狐新浪Tom等提供搜索引擎),2001年10月22日正式发布Baidu搜索引擎,专注于中文搜索。Baidu搜索引擎的其它特色包括:百度快照、网页预览/预览全部网页、相关搜索词、错别字纠正提示、mp3搜索、Flash搜索。2002年3月闪电计划(Blitzen Project)开始后,技术升级明显加快。后推出贴吧、知道、地图、国学、百科、文档、视频、博客等一系列产品,深受网民欢迎。2005年8月5日在纳斯达克上市,发行价为USD 27.00,代号为BIDU。开盘价USD 66.00,以USD 122.54收盘,涨幅353.85%,创下了5年以来美国股市上市新股当日涨幅最高纪录。2003年12月23日,原慧聪搜索正式独立运做,成立了中国搜索。2004年2月,中国搜索发布桌面搜索引擎网络猪1.0,2006年3月中搜将网络猪更名为IG(Internet Gateway) 。1.3搜索引擎的分类1.3.1全文索引全文搜索引擎是名副其实的搜索引擎,国外代表有Google,国内则有著名的百度搜索。它们从互联网提取各个网站的信息(以网页文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。根据搜索结果来源的不同,全文搜索引擎可分为两类,一类拥有自己的检索程序(Indexer),俗称“蜘蛛”(Spider)程序或“机器人”(Robot)程序,能自建网页数据库,搜索结果直接从自身的数据库中调用,上面提到的Google和百度就属于此类;另一类则是租用其他搜索引擎的数据库,并按自定的格式排列搜索结果,如Lycos搜索引擎。1.3.2目录索引目录索引虽然有搜索功能,但严格意义上不能称为真正的搜索引擎,只是按目录分类的网站链接列表而已。用户完全可以按照分类目录找到所需要的信息,不依靠关键词(Keywords)进行查询。目录索引中最具代表性的莫过于大名鼎鼎的Yahoo、新浪分类目录搜索。1.3.3元搜索引擎1995年,一种新的搜索引擎形式出现了元搜索引擎(Meta Search Engine)。用户只需提交一次搜索请求,由元搜索引擎负责转换处理后提交给多个预先选定的独立搜索引擎,并将从各独立搜索引擎返回的所有查询结果,集中起来处理后再返回给用户。第一个元搜索引擎,是Washington大学硕士生 Eric Selberg 和 Oren Etzioni 的 Metacrawler。元搜索引擎(META Search Engine)接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。在搜索结果排列方面,有的直接按来源排列搜索结果,如Dogpile;有的则按自定的规则将结果重新排列组合,如Vivisimo。1.3.4垂直搜索引擎垂直搜索是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户。相对通用搜索引擎的信息量大、查询不准确、深度不够等提出来的新的搜索引擎服务模式,通过针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。其特点就是“专、精、深”,且具有行业色彩,相比较通用搜索引擎的海量信息无序化,垂直搜索引擎则显得更加专注、具体和深入。1.3.5其他非主流搜索引擎形式(1)集合式搜索引擎该搜索引擎类似元搜索引擎,区别在于它并非同时调用多个搜索引擎进行搜索,而是由用户从提供的若干搜索引擎中选择,如HotBot在2002年底推出的搜索引擎。(2)门户搜索引擎AOL Search、MSN Search等虽然提供搜索服务,但自身既没有分类目录也没有网页数据库,其搜索结果完全来自其他搜索引擎。(3)免费链接列表(Free For All Links简称FFA)一般只简单地滚动链接条目,少部分有简单的分类目录,不过规模要比Yahoo!等目录索引小很多。以上简要介绍了搜索引擎的概念,发展历史,分类以及工作原理,相信大家对搜索引擎已经有了初步的了解和认识,下面 以“竹竹”搜索引擎为例,介绍大规模搜索引擎的工作原理和实现技术。第二章 系统需求分析2.1搜索引擎的工作原理为了帮助大家更好的理解本系统,首先向大家介绍一下搜索引擎的工作原理。搜索引擎系统由三部分构成:信息搜集模块、分析索引模块和检索服务模块。信息搜集模块采用一种像真人一样可以浏览网页的Robot程序, 这类程序能自动地在网上漫游, 从一个或一组URL开始访问, 然后下载相应的网页,抽取页面中的链接, 按照某种算法决定下一步要访问的URL地址, 常用的算法有广度优先和深度优先。Robot(机器人)一词对编程者有特殊的意义。Computer Robot是指某个能以人类无法达到的速度不断重复执行某项任务的自动程序。由于专门用于检索信息的Robot程序像蜘蛛(spider)一样在网络间爬来爬去,因此,搜索引擎的Robot程序被称为spider程序。Robot程序不停地重复这个访问过程, 搜集信息资料, 存储到本地数据库, 直至再没有满足条件的新的URL地址或超出了某些条件限制。分析索引模块将Robot程序采集的信息进行比较分析, 删除那些内容基本相似的转载网页, 以及未加任何修改, 内容完全相同的镜像网页, 然后, 对留存的网页信息, 剔除HTML等的标志符号, 提取出网页源文件内容特征的关键词, 汇集成索引数据库, 并随时顺着链接跟踪网上新加入的主页, 为其建立索引。索引数据库就是一个很大的查询表, 主要的字段有:网站的名称、标题、URL地址、摘要等。对Web页面内容进行全文索引, 即对Web页中每一个单词进行标引。从网页中按某些分类或特征对信息进行抽取。例如: Lycos 仅标引文件名、文件标题和全文前20 行的内容。而AltaVista 的索引处理则最为全面, 不仅对网页的所有文本、图像及链接等进行索引, 而且还记录单词之间的相对位置。一般来说, 标引的索引词越多, 检索的全面性越高, 分析索引模块是搜索引擎提供检索服务的基础。2.2系统功能需求本系统的功能需求是:搜索引擎系统从一个或一组已URL开始访问互联网,下载相关的网页信息及新的链接, 以一定的策略遍历新链接, 并读取新链接的信息内容, 将它们加入到本地数据库。然后, 由分析索引模块对这些数据进行处理组织后, 形成索引数据库。用户通过用户模块提交查询服务, 在搜索框中输入检索式, 系统就会自动完成检索, 并按一定的排列方式返回检索结果。对它有如下基本要求。能够接受用户通过浏览器提交的查询词或者短语,记作q,例如“联想”,“IBM”,“hp”等等。 在一个可以接受的时间内返回一个和该用户查询匹配的网页信息列表。系统根据功能可分为两个部分:检索界面, 可以接受用户提交的检索要求;检索结果,将检索到的资料整理组织后按一定顺序提供给用户。搜索引擎的检索结果通常包含大量文献, 为了将最有“价值”的网页提供给用户, 搜索引擎一般都能按查询的相关程度对检索结果进行排列, 最相关的文献通常排在最前面。2.3系统性能需求(1)系统要有很好的可移植性。(2)系统必须有很好的可维护性,代码的格式规范。(3)系统要有健壮性。(4)界面设计要求简洁、美观、大方。(5)系统运行必须稳定,消耗资源少,代码效率高。(6)系统运行环境:Linux操作系统,火狐浏览器。(7)系统开发环境:myeclips,Oracle10g数据库。第三章 系统总体设计3.1“竹竹”搜索引擎系统总体介绍搜索引擎技术伴随着WWW的发展是引人注目的。“竹竹”搜索引擎是基于Web的,面向笔记本电脑品牌的搜索引擎。由于笔记本电脑的使用和风靡,有关笔记本电脑的检索也随之增多。因此,为了使用户能够更加简单,快捷的检索笔记本电脑,设计实现了“竹竹”搜索引擎。对它有如下基本要求:能够接受用户通过浏览器提交的查询词或者短语。 在一个可以接受的时间内返回一个和该用户查询匹配的网页信息列表。这个列表的每一条目至少包含三个元素(标题,网址链接,摘要)。“可以接受的时间”,也就是响应时间。对于基于Web的软件来说,这个时间不能太长,通常也就在“秒”这个量级。这是衡量搜索引擎可用性的一个基本指标,也是和传统信息检索系统的一个差别。当用户在检索框中输入要检索的笔记本电脑品牌时,系统将“匹配”与之相对应的结果集。“匹配”,指的是网页中以某种形式包含有q,就是q在其中直接出现。由于Web上的信息量大,而且搜索引擎的查询方式简单。简单,意味着抽象;抽象,意味着有更多的具体事物可能是它的体现。对于一个长长的列表,很少有用户有耐心都审视一遍。因此返回的结果集将会在结果界面返回与用户输入品牌名相同笔记本电脑的信息,并且对其进行分页。图3-1是用户与搜索引擎系统的接口。用户首先在文本框中输入要检索的关键字,然后,单击搜索按钮。图3-1 搜索界面图3-2是搜索引擎系统为用户返回的结果集列表。其中当前页列出了结果集中10条明基电脑的摘要信息。图3-2 界面结果集页面图3-3是用户点击结果集列表中的摘要信息后,跳转的详细信息页面。在此页面中,显示了所选笔记本电脑的详细信息。图3-3 详细信息页面3.2系统模块介绍3.2.1 模块功能介绍现代大规模高质量搜索引擎一般包括三个部分即:网页搜集、预处理和查询服务。鉴于此,“竹竹”搜索引擎系统的模块分为三个子模块,分别为抓取模块,处理模块,用户模块。图3-4是“竹竹”搜索引擎的的系统模块图。搜索引擎系统用户模块抓取模块处理模块图3-4 “竹竹”搜索引擎的的系统模块图(1)抓取网页抓取模块的主要功能是用来将web上的海量网页抓取到系统中;首先“竹竹”搜索引擎是一个网络应用软件系统,这个软件系统操作的数据不仅包括内容不可预测的用户查询,还要包括在数量上动态变化的海量网页,并且这些网页不会主动送到系统来,而是需要由系统去抓取。 首先,考虑抓取的时机:事先情况下,从网上下载一篇网页大约需要1秒钟左右,因此如果在用户查询的时候即时去网上抓来成千上万的网页,一个个分析处理,和用户的查询匹配,不可能满足搜索引擎的响应时间要求。不仅如此,这样做的系统效益也不高(会重复抓取太多的网页);面对大量的用户查询,不可能想象每来一个查询,系统就到网上“搜索”一次。本系统所采用的方式为将海量网页一次性抓取到本地。抓取后,还要对网页进行维护。因为,网页是不断更新变化的,因此要进行定期搜集,每次搜集替换上一次的内容,称之为“批量搜集”。由于每次都是重新来一次,对于大规模搜索引擎来说,每次搜集的时间通常会花几周。而由于这样做开销较大,通常两次搜集的间隔时间也不会很短(例如早期天网的版本大约每3个月来一次,Google在一段时间曾是每隔28天来一次)。最常见的一种是所谓“爬取”:将Web上的网页集合看成是一个有向图,搜集过程从给定起始URL集合S(或者说“种子”)开始,沿着网页中的链接,按照先深、先宽、或者某种别的策略遍历,不停的从S中移除URL,下载相应的网页,解析出网页中的超链接URL,看是否已经被访问过,将未访问过的那些URL加入集合S。整个过程可以形象地想象为一个蜘蛛(spider)在蜘蛛网(Web)上爬行(crawl)。真正的系统其实是多个“蜘蛛”同时在爬。 这种方式的好处除了概念很漂亮,一般实现起来也不困难。任何所谓目标网页指的是搜索引擎设计覆盖的网页范围。搜索引擎是不可能将Web上的网页搜集完全的,通常都是在其他条件的限制下决定搜集过程的结束。由于HTML的灵活性,其中出现URL的方式各种各样,将这个环节做得彻底不容易。同时,由于Web的“蝴蝶结”形状,这种方式搜集到的网页不大会超过所有目标网页数量的2/3。 本系统使用的方法是使用Heritrix来完成对网页的抓取。无论多么强大的搜索引擎工具,在其后台,都需要一样东西来支援它,那就是网络爬虫Spider。网络爬虫,又被称为蜘蛛Spider,或是网络机器人、BOT等,这些都无关紧要,最重要的是要认识到,由于爬虫的存在,才使得搜索引擎有了丰富的资源。Heritrix是一个纯由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。它来自于。Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。本系统就是使用Heritrix来实现抓取模块的。图3-5就是此抓取模块的流程图。图3-5 抓取流程图(2)处理网页信息处理模块的主要功能:1)解析网页,提取其中的有用内容;2)为网页建立词库,由于笔记本电脑的品牌名在现有词库中不存在,因此要建立其特有的词库文件;3)对解析网页生成的信息文件进行分词,并建立索引;4)将索引存入数据库中得到海量的原始网页集合,距离面向网络用户的检索服务之间还有相当的距离。首先,要对原始网页进行分析,将其中的有价值的部分提取出来,在网页中存在着大量无用的信息比如大量的HTML标记。但HTML标记既给网页的预处理造成了一些麻烦,也带来了一些新的机遇。从信息检索的角度讲,如果系统面对的仅仅是内容的文字,我们能依据的就是其内容所包含的关键词集合,最多加上词频(term frequency 或tf、TF)和词在文档集合中出现的文档频率(document frequency 或df、DF)之类的统计量。而TF和DF这样的频率信息能在一定程度上指示词语在一篇文档中的相对重要性或者和某些内容的相关性,这是有意义的。有了HTML标记后,情况还可能进一步改善,例如在同一篇文档中,和之间的信息很可能就比在和之间的信息更重要。当本人利用Heritrix将本人所需要的网页全部抓取下来时,需要将本人所关注的信息从网页中分析出来。因此使用了HTMLParser这个工具来解析网页,并将网页的标题作为索引记录下来;并按照网页的题目(即笔记本电脑的品牌及型号)建立笔记本电脑的信息文件,该信息文件用来保存笔记本电脑的信息,包括笔记本电脑的品牌及型号,笔记本电脑的配置信息,以及与该型号对应的电脑图片。分析完成后要对此信息文件进行建索。在这个部分,需要准备开始将产品详细信息插入到数据库,并建立Lucene的索引,以下是要做的两件事:定义一个Product类作为装载数据的值对象;确定数据库与索引的结构。数据库的处理用JDBC来实现。具体实现步骤为:使用addProduct方法来向数据库中插入记录。addProduct方法的参数是一个Product类型的对象,在此方法中,从Product对象中取出相应的值,然后创建一个PreparedStaement,来执行JDBC的写入。在写入前,首先调用getNextId方法取得所要插入的这条记录的ID号,并随着方法返回给调用者,以便调用者可以将这个ID传到Lucene的索引中,以次将数据库记录和Lucene的索引对应起来。图3-6就是此建索过程的流程图图3-6 处理模块流程图(3)用户模块用户模块的主要功能:用户模块是系统的用户接口,用户通过此模块完成于系统的交互。当用户在查询界面上输入要检索的品牌信息后,系统将在可以接受的时间内,返回用户所需的结果集。用户通过搜索引擎的查询页面访问到“竹竹”搜索引擎,在查询的文本框中输入要查询的品牌名称,然后,点击查询按钮,系统将到数据库中查询,并将结果集返回。如果,查询不到用户输入的关键字所对应的产品信息,就返回提示信息,提示用户没有于其输入的关键字所对应的结果。用户模块要满足的条件有:1)能够接受用户通过浏览器提交的查询词或者短语,记作q,例如“联想”,“IBM”,“hp”等等。2) 在一个可以接受的时间内返回一个和该用户查询匹配的网页信息列表,记作L。这个列表的每一条目至少包含三个元素(标题,网址链接,摘要)。 “可以接受的时间”,也就是响应时间。对于在Web上面软件来说,这个时间不能太长,通常也就在“秒”这个量级。用例图体现了这一模块与搜索引擎的接口关系。返回结果集输入关键字图3-7 用例图第四章 系统详细设计4.1模块总体介绍从本章开始介绍系统的详细设计。首先,对本系统的结构进行简单的介绍,“竹竹 ”搜索引擎的系统的前端以MVC模式来实现,Spring做中间层,JDBC作后端来开发实现的。系统架构从功能上可以分为前端和后端两部分。在后端流程中,Heritrix从因特网上获取 Web 页面,并解析这些网页,提取出网页中有用的信息生成product文本文件,文件名以产品名产品型号命名。然后索引子系统解析这些 Web 页面并存入索引文件中。并且将product文本文件封装成product对象写入数据库中。在前台流程中,用户在main.jsp中输入关键字后,系统将对关键字进行分词,然后到数据库中查找与其对应的结果集,作为结果列表返回,当用户点击某产品的摘要时,跳转到detail.jsp页面中,在此页面显示产品的详细信息。“竹竹”搜索引擎系统的模块分为三个子模块,分别为抓取模块,处理模块,用户模块。其中抓取模块又可分为安装配置子模块,分析网页子模块;处理模块可分为解析网页子模块,创建词库子模块,生成持久化类子模块,创建Document子模块,存储数据子模块;用户模块可以分为查询主页面,详细信息页面。图3-11是系统详细模块图。图3-11 系统模块图4.2抓取子模块4.2.1运行Heritrix子模块本系统所使用的方法是使用Heritrix来完成对网页的抓取。首先将Heritrix在自己的电脑上配置好。然后,运行Heritrix,运行步骤如下:(1)设置任务1)单击WebUI菜单栏上的“Jobs”标签,就可以进入任务创建页面。如图4-1所示图4-1 菜单栏上的“Jobs”标签2)在任务创建页面中,有4种创建任务的方式,如图4-2所示,具体含义如下。Based on existing job:以一个已经有的抓取任务为模板,创建所有抓取属性和抓取起始URL的列表。Based on a recovery:在以前的某个任务中,可能设置过一些状态点,新的任务将从这个设置的状态点开始。Based on a profile:专门为不同的任务设置了一些模板,新建的任务将按照模板来生成。With defaults:这个最简单,表示按默认的配置来生成一个任务。图4-2“任务”菜单中在Heritrix中,一个任务对应一个描述文件。这个描述文件的默认的名称为order.xml。每次创建一个新任务时,都相当于生成了一个order.xml的文件。文件中详细记录了Heritrix在运行时需要的所有信息。例如,它包括该用户所选择的Processor类、Frontier类、Fetcher类、抓取时线程的最大数量、连接超时的最大等待时间等信息。上面所说的4种创建抓取任务的方式,其实都是在生成一个order.xml文件。其中,第4种With defaults,则是直接拷贝默认的order.xml文件。在所创建的Eclipse工程或是命令行启动的Heritrix下载包中,该默认的order.xml文件均是放于profilesdefault目录下的。关于order.xml的细节,在此还不必深究。因为它里面所有的内容,都会在WebUI上看到。3)单击With defaults链接,创建一个新的抓取任务,如图4-3所示。图4-3 新的抓取任务4)在新建任务的名称上,填入“notebook”,表示该抓取任务将抓取笔记本电脑。在Description中随意填入字符,然后再在seeds框中,填入太平洋电脑网的网址。如图4-4:图4-4 设置太平洋电脑网的首页为种子这里需要解释一下seeds的含义。所谓seeds,其实指的是抓取任务的起始点。每次的抓取,总是需要从一个起始点开始,在得到这个起始点网页上的信息后,分析出新的地址加入抓取队列中,然后循环抓取,重复这样的过程,直到所有链接都分析完毕。当然,凭着目前的设置,还没法开始抓取网页,还需要对这个任务进行详细的设置。(2)设置抓取时的处理链在图4-4中,seeds文本框下有一排按钮,单击“Modules”按钮,就进入了配置抓取时的处理链的页面,如图4-6所示。图4-6 配置处理链的页面从上而下,可以看到,需要配置的内容共有7项,其中CrawlScope和Frontier是两个最重要的组件。CrawlScope用于配置当前应该在什么范围内抓取网页链接。比如,如果选择BroadScope,则表示当前抓取的范围不受限制,但如果选择了HostScope,则表示抓取的范围在当前的Host内。从经验看来,在抓取时,无论是HostScope或PathScope都不能真正的限制抓取的内容。需要对Scope内的代码进行一定的修改才可以,因此,暂时选择BroadScope来充当示例中的范围限定,其实也就是对范围不做任何的限定。即从开始,抓取任何可以抓取到的信息。Frontier则是一个URL的处理器,它将决定下一个被处理的URL是什么。同时,它还会将经由处理器链所解析出来的URL加入到等待处理的队列中去。除了这两个组件外,还有5个队列要配。这五个队列根据先后的顺序,就依次组成了Heritrix的整个处理器链。5个队列的含义分别如下:1)PreProcessor:这个队列中,所有的处理器都是用来对抓取时的一些先决条件做判断的。比如判断robot.txt的信息等,它是整个处理器链的入口。2)Fetcher:从名称上看,它用于解析网络传输协议,比如解析DNS、HTTP或FTP等。在演示中,主要使用FetchDNS和FetchHTTP两个类。3)Extractor:它的名字就很好的揭示了它的作用。它主要用是于解析当前获取到的服务器返回内容,这些内容通常是以字符串形式缓存的。在这个队列中,包括了一系列的工具,如解析HTML、CSS等。在解析完毕,取出页面中的URL后,将它们放入队列中,等待下次继续抓取。4)Writer:主要是用于将所抓取到的信息写入磁盘。通常写入磁盘时有两种形式,一种是采用压缩的方式写入,在这里被称为Arc方式,另一种则采用镜象方式写入。当然处理起来,镜象方式要更为容易一些,因此,在演示中命名用镜象Mirror方式。5)PostProcessor:在整个抓取解析过程结束后,进行一些扫尾的工作,比如将前面Extractor解析出来的URL有条件的加入到待处理队列中去。值得一提的是,在处理器链的设置过程中,每一个队列中的处理器都是要分先后顺序的,信息的处理流程实际上是不可逆的,因此,在设置时,可以看见在队列的右侧总是有“Up”、“Down”和“Remove”这样的操作,以帮助能够正确的设置其顺序。在设置完Hertrix所需的处理链后,仍然还不能够马上开始抓取任务,还需对默认的运行时参数做一些修改,以适应真正的需要。(3)设置运行时的参数在设置完处理链后,单击“Settings”链接,就进入了属性设置的页面,如图4-7所示。图4-7 进入“Settings”在属性设置页面上有非常多的输入域,Heritrix在抓取网页时,这些域是用来对的各个组件的值进行预设,如图4-8所示。图4-8 属性配置页面可以看到,在每个属性的右侧都有一个小问号,当单击问号时,就会弹出一个Javascript的Alert提示框,上面介绍了当前属性的作用。例如,在上图中单击“max-bytes-download”属性,通过Alert的提示可以知道,它表示的是抓取器最大下载的字节数,当下载字节数超过这个属性上所设定的值时,抓取就会自动停止。另外,如果将这个值设为0,则表示没有限制。事实上,当在第一次使用Heritrix时,所需要设置的参数并不多,以默认设置为主。以下就来介绍一些必须要在第一次使用时就要配置好的参数。1)max-toe-threads该参数的含义很容易了解,它表示Heritrix在运行该抓取任务时,为任务分配多少个线程进行同步抓取。该参数的默认值为100,在机器配置和网络均很好的情况下,设置50个线程数就已经足够使用了。2)HTTP-Header在HTTP-Header这个属性域下面,包括两个属性值“user-agent”和“from”。图4-9是一种配置方式。图4-9 一种正确的配置“VERSION”字符串需要被替换成Heritrix的版本信息。“PROJECT_URL_HERE”可以被替换成任何一个完整的URL地址。“from”属性中不需要设置真实的E-mail地址,只需是格式正确的邮件地址就可以了。当正确设置了上述的两个属性后,Heritrix就具备了运行的条件。单击“Submit”链接,提交这个抓取任务,至此,已经把Heritrix成功的运行起来如图4-10所示。图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论