《搜索引擎的设计与实现-学位论文.doc》由会员分享,可在线阅读,更多相关《搜索引擎的设计与实现-学位论文.doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学校代码: 10128学 号: 040201015 本科毕业设计说明书题 目:搜索引擎的设计与实现学生姓名:庞佳学 院:信息工程学院系 别:计算机专 业:计算机科学与技术班 级:计算机04-2指导教师:苏依拉 副教授 钱庭荣 工程师二 八 年 六 月内蒙古工业大学本科毕业设计说明书摘 要为了适应网络信息的飞速增长,并且能够迅速、方便地从网络中获取有效信息, 搜索引擎逐渐走进了人们的生活,“竹竹”搜索引擎系统在这样的条件下,应运而生。本文首先系统的介绍了搜索引擎的概念、发展历史、和搜索引擎的分类。使读者能够初步了解搜索引擎技术。然后,详细介绍了“竹竹”搜索引擎系统。“竹竹”搜索引擎是基于Web的
2、,面向笔记本电脑品牌的搜索引擎。系统的前端以MVC模式来实现,Spring做中间层,JDBC作后端来开发实现的。本系统分为三个子模块,抓取模块实现的功能为:将web上的海量网页抓取到系统中;采用的实现方法是使用Heritrix来完成对网页的抓取。处理模块实现的功能为:解析网页,提取其中的有用内容,为网页建立词库,由于笔记本电脑的品牌名在现有词库中不存在,因此要建立其特有的词库文件,对解析网页生成的信息文件进行分词,并建立索引,将索引存入数据库中;采用的实现方法是:通过Lucene的API来实现对网页内容的建索,使用HTMLParser的API实现了对网页内容的解析。用户模块实现的主要功能是:用
3、户模块是系统的用户接口,用户通过此模块完成与系统的交互,当用户在查询界面上输入要检索的品牌信息后,系统将在可以接受的时间内,返回用户所需的结果集;采用的实现方法是:通过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 g
4、radually 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 th
5、e 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 func
6、tions: 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
7、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 conte
8、nt 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 requir
9、ements 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搜索引
10、擎的分类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创建Documen
11、t子模块294.4.5存储数据子模块334.4用户子模块334.4.1搜索页面344.4.2详细信息页面34结 论35参考文献36谢 辞372引 言 随着互联网的不断发展和日益普及,信息技术的不断发展,网上的信息量在爆炸性增长,这已经深入到了人们生活的各个方面,改变了人们生活方式和思维方式,方便了全球信息资源共享。在2004年4月,全球Web页面的数目已经超过40亿,中国的网页数估计也超过了3亿。要在如此浩瀚的海洋里寻找信息,就像“大海捞针”一样,能有一种工具使我们可以迅速找到我们想要的内容吗?答案是“有”,这就是搜索引擎。著名的因特网搜索引擎包括Baidu、Google、Sohu等。由于笔记
12、本电脑的使用和风靡,有关笔记本电脑的检索也随之增多。因此,为了使用户能够更加简单,快捷的检索笔记本电脑,“竹竹”搜索引擎系统实现了这种需求。搜索引擎(Search Engine)就是指在WWW(World Wide Web)环境中能够响应用户提交的搜索请求,返回相应的查询结果信息的技术和系统,是互联网上的可以查询网站或网页信息的工具。它包括信息搜集、信息整理和用户查询三部分。“竹竹” 搜索引擎系统实现了自动将Web上的海量网页抓取到本地。然后解析网页,提取其中的有用内容,为网页建立词库(由于笔记本电脑的品牌名在现有词库中不存在,因此要建立其特有的词库文件),对解析网页生成的信息文件进行分词,并
13、建立索引,将索引存入数据库中。“竹竹” 搜索引擎系统为用户提供了简洁的查询页面,用户通过此界面完成与系统的交互。当用户在查询界面上输入要检索的品牌信息后,系统将在可以接受的时间内,返回用户所需的结果集。因此,本系统实现了搜索引擎的基本功能,能够使用户可以简单,快捷,精确的对笔记本电脑品牌进行检索。36内蒙古工业大学本科毕业设计说明书第一章 课题背景1.1搜索引擎的概念由于网络信息的飞速增长,我们不得不面对浩瀚的网络资源,这极大地改变了人们获取信息的方式, 面对浩如烟海的网络信息, 如何才能迅速、方便地获取有效信息, 日益成为人们关心的问题, 搜索引擎的出现极大地缓解了这一矛盾。它为所有网上冲浪
14、的用户提供了一个入口,毫不夸张的说,所有的用户都可以从搜索出发到达自己想去的网上任何一个地方。因此它也成为除了电子邮件以外最多人使用的网上服务。搜索引擎是一种应用在Web上的,为用户提供检索服务的软件系统, 它以一定的策略在Web上搜集和发现信息, 并对信息进行分析、提取、组织等处理后形成供检索用的数据库。从使用者的角度看,这种软件系统提供一个网页界面,让他通过浏览器提交一个词语或者短语,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法通常根据网页中关键词的匹配程度,出现的位置/频次,链接质量等计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页
15、链接返回给用户。这个与用户输入内容相关的信息列表(常常会是很长一个列表,例如包含1万个条目)。这个列表中的每一条目代表一篇网页,至少有3个元素: (1)标题:以某种方式得到的网页内容的标题。最简单的方式就是从网页的标签中提取的内容。(尽管在一些情况下并不真正反映网页的内容)。(2)URL:该网页对应的“访问地址”。有经验的Web用户常常可以通过这个元素对网页内容的权威性进行判断,例如上面的内容通常就比(某个假想的个人网站)上的要更权威些(不排除后者上的内容更有趣些)。 (3)摘要:以某种方式得到的网页内容的摘要。最简单的一种方式就是将网页内容的头若干字节(例如512)截取下来作为摘要。 通过浏
16、览这些元素,用户对相应的网页是否真正包含他所需的信息进行判断。比较肯定的话则可以点击上述URL,从而得到该网页的全文。搜索引擎提供信息查询服务的时候,它面对的只是查询词。而有不同背景的人可能提交相同的查询词,关心的是和这个查询词相关的不同方面的信息,但搜索引擎通常是不知道用户背景的,因此搜索引擎既要争取不漏掉任何相关的信息,还要争取将那些“最可能被关心”的信息排在列表的前面。这也就是对搜索引擎的根本要求。除此以外,考虑到搜索引擎的应用环境是Web,因此对大量并发用户查询的响应性能也是一个不能忽略的重要性能指标。1.2搜索引擎的发展历史1.2.1搜索引擎的起源所有搜索引擎的祖先,是1990年由M
17、ontreal的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 Wander
18、er,用于追踪互联网发展规模。刚开始它只用来统计互联网上的服务器数量,后来则发展为也能够捕获网址(URL) 1.2.2第一代搜索引擎第一代搜索引擎出现于1994年。这类搜索引擎一般都索引少于1,000,000个网页,极少重新搜集网页并去刷新索引。而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。在实现技术上也基本沿用较为成熟的IR(Information Retrieval)、网络、数据库等技术,相当于利用一些已有技术实现的一个WWW上的应用。1994年4月,斯坦福大学的两名博士生,美籍华人杨致远和David Filo共同创办了Yahoo!。随着访问量和收录链接数的增长,Yahoo目录开
19、始支持简单的数据库搜索。因为Yahoo!的数据是手工输入的,所以不能真正被归为搜索引擎,事实上只是一个可搜索的目录。Yahoo!中收录的网站,因为都附有简介信息,所以搜索效率明显提高。1.2.3第二代搜索引擎大约在1996年出现的第二代搜索引擎系统大多采用分布式方案(多个微型计算机协同工作)来提高数据规模、响应速度和用户数量,它们一般都保持一个大约50,000,000网页的索引数据库,每天能够响应10,000,000次用户检索请求。1997年11月,当时最先进的几个搜索引擎号称能建立从2,000,000到100,000,000的网页索引。Altavista搜索引擎声称他们每天大概要承受20,0
20、00,000次查询。2000年搜索引擎2000年大会上,按照Google公司总裁Larry Page的演讲,Google正在用3,000台运行Linux系统的个人电脑在搜集Web上的网页,而且以每天30台的速度向这个微机集群里添加电脑,以保持与网络的发展相同步。每台微机运行多个爬虫程序搜集网页的峰值速度是每秒100个网页,平均速度是每秒48.5个网页,一天可以搜集超过4,000,000网页搜索引擎一词在国内外因特网领域被广泛使用,然而他的含义却不尽相同。在美国搜索引擎通常指的是基于因特网的搜索引擎,他们通过网络机器人程序收集上千万到几亿个网页,并且每一个词都被搜索引擎索引,也就是我们说的全文检
21、索。著名的因特网搜索引擎包括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日注册了
22、的域名,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第一个在非英语国家起的名字。19
23、96年8月,sohu公司成立,制作中文网站分类目录,曾有“出门找地图,上网找搜狐”的美誉。随着互联网网站的急剧增加,这种人工编辑的分类目录已经不适应。sohu于2004年8月独立域名的搜索网站“搜狗”,自称“第三代搜索引擎”。2000年1月,两位北大校友,超链分析专利发明人、前Infoseek资深工程师李彦宏与好友徐勇(加州伯克利分校博士后)在北京中关村创立了百度(Baidu)公司。2001年8月发布B搜索引擎Beta版(此前Baidu只为其它门户网站搜狐新浪Tom等提供搜索引擎),2001年10月22日正式发布Baidu搜索引擎,专注于中文搜索。Baidu搜索引擎的其它特色包括:百度快照、网
24、页预览/预览全部网页、相关搜索词、错别字纠正提示、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(In
25、ternet Gateway) 。1.3搜索引擎的分类1.3.1全文索引全文搜索引擎是名副其实的搜索引擎,国外代表有Google,国内则有著名的百度搜索。它们从互联网提取各个网站的信息(以网页文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。根据搜索结果来源的不同,全文搜索引擎可分为两类,一类拥有自己的检索程序(Indexer),俗称“蜘蛛”(Spider)程序或“机器人”(Robot)程序,能自建网页数据库,搜索结果直接从自身的数据库中调用,上面提到的Google和百度就属于此类;另一类则是租用其他搜索引擎的数据库,并按自定的格式排列搜索结果,如Lyco
26、s搜索引擎。1.3.2目录索引目录索引虽然有搜索功能,但严格意义上不能称为真正的搜索引擎,只是按目录分类的网站链接列表而已。用户完全可以按照分类目录找到所需要的信息,不依靠关键词(Keywords)进行查询。目录索引中最具代表性的莫过于大名鼎鼎的Yahoo、新浪分类目录搜索。1.3.3元搜索引擎1995年,一种新的搜索引擎形式出现了元搜索引擎(Meta Search Engine)。用户只需提交一次搜索请求,由元搜索引擎负责转换处理后提交给多个预先选定的独立搜索引擎,并将从各独立搜索引擎返回的所有查询结果,集中起来处理后再返回给用户。第一个元搜索引擎,是Washington大学硕士生 Eric
27、 Selberg 和 Oren Etzioni 的 Metacrawler。元搜索引擎(META Search Engine)接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。在搜索结果排列方面,有的直接按来源排列搜索结果,如Dogpile;有的则按自定的规则将结果重新排列组合,如Vivisimo。1.3.4垂直搜索引擎垂直搜索是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以
28、某种形式返回给用户。相对通用搜索引擎的信息量大、查询不准确、深度不够等提出来的新的搜索引擎服务模式,通过针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。其特点就是“专、精、深”,且具有行业色彩,相比较通用搜索引擎的海量信息无序化,垂直搜索引擎则显得更加专注、具体和深入。1.3.5其他非主流搜索引擎形式(1)集合式搜索引擎该搜索引擎类似元搜索引擎,区别在于它并非同时调用多个搜索引擎进行搜索,而是由用户从提供的若干搜索引擎中选择,如HotBot在2002年底推出的搜索引擎。(2)门户搜索引擎AOL Search、MSN Search等虽然提供搜索服务,但自身既没有分类
29、目录也没有网页数据库,其搜索结果完全来自其他搜索引擎。(3)免费链接列表(Free For All Links简称FFA)一般只简单地滚动链接条目,少部分有简单的分类目录,不过规模要比Yahoo!等目录索引小很多。以上简要介绍了搜索引擎的概念,发展历史,分类以及工作原理,相信大家对搜索引擎已经有了初步的了解和认识,下面 以“竹竹”搜索引擎为例,介绍大规模搜索引擎的工作原理和实现技术。第二章 系统需求分析2.1搜索引擎的工作原理为了帮助大家更好的理解本系统,首先向大家介绍一下搜索引擎的工作原理。搜索引擎系统由三部分构成:信息搜集模块、分析索引模块和检索服务模块。信息搜集模块采用一种像真人一样可以
30、浏览网页的Robot程序, 这类程序能自动地在网上漫游, 从一个或一组URL开始访问, 然后下载相应的网页,抽取页面中的链接, 按照某种算法决定下一步要访问的URL地址, 常用的算法有广度优先和深度优先。Robot(机器人)一词对编程者有特殊的意义。Computer Robot是指某个能以人类无法达到的速度不断重复执行某项任务的自动程序。由于专门用于检索信息的Robot程序像蜘蛛(spider)一样在网络间爬来爬去,因此,搜索引擎的Robot程序被称为spider程序。Robot程序不停地重复这个访问过程, 搜集信息资料, 存储到本地数据库, 直至再没有满足条件的新的URL地址或超出了某些条件
31、限制。分析索引模块将Robot程序采集的信息进行比较分析, 删除那些内容基本相似的转载网页, 以及未加任何修改, 内容完全相同的镜像网页, 然后, 对留存的网页信息, 剔除HTML等的标志符号, 提取出网页源文件内容特征的关键词, 汇集成索引数据库, 并随时顺着链接跟踪网上新加入的主页, 为其建立索引。索引数据库就是一个很大的查询表, 主要的字段有:网站的名称、标题、URL地址、摘要等。对Web页面内容进行全文索引, 即对Web页中每一个单词进行标引。从网页中按某些分类或特征对信息进行抽取。例如: Lycos 仅标引文件名、文件标题和全文前20 行的内容。而AltaVista 的索引处理则最为
32、全面, 不仅对网页的所有文本、图像及链接等进行索引, 而且还记录单词之间的相对位置。一般来说, 标引的索引词越多, 检索的全面性越高, 分析索引模块是搜索引擎提供检索服务的基础。2.2系统功能需求本系统的功能需求是:搜索引擎系统从一个或一组已URL开始访问互联网,下载相关的网页信息及新的链接, 以一定的策略遍历新链接, 并读取新链接的信息内容, 将它们加入到本地数据库。然后, 由分析索引模块对这些数据进行处理组织后, 形成索引数据库。用户通过用户模块提交查询服务, 在搜索框中输入检索式, 系统就会自动完成检索, 并按一定的排列方式返回检索结果。对它有如下基本要求。能够接受用户通过浏览器提交的查
33、询词或者短语,记作q,例如“联想”,“IBM”,“hp”等等。 在一个可以接受的时间内返回一个和该用户查询匹配的网页信息列表。系统根据功能可分为两个部分:检索界面, 可以接受用户提交的检索要求;检索结果,将检索到的资料整理组织后按一定顺序提供给用户。搜索引擎的检索结果通常包含大量文献, 为了将最有“价值”的网页提供给用户, 搜索引擎一般都能按查询的相关程度对检索结果进行排列, 最相关的文献通常排在最前面。2.3系统性能需求(1)系统要有很好的可移植性。(2)系统必须有很好的可维护性,代码的格式规范。(3)系统要有健壮性。(4)界面设计要求简洁、美观、大方。(5)系统运行必须稳定,消耗资源少,代
34、码效率高。(6)系统运行环境:Linux操作系统,火狐浏览器。(7)系统开发环境:myeclips,Oracle10g数据库。第三章 系统总体设计3.1“竹竹”搜索引擎系统总体介绍搜索引擎技术伴随着WWW的发展是引人注目的。“竹竹”搜索引擎是基于Web的,面向笔记本电脑品牌的搜索引擎。由于笔记本电脑的使用和风靡,有关笔记本电脑的检索也随之增多。因此,为了使用户能够更加简单,快捷的检索笔记本电脑,设计实现了“竹竹”搜索引擎。对它有如下基本要求:能够接受用户通过浏览器提交的查询词或者短语。 在一个可以接受的时间内返回一个和该用户查询匹配的网页信息列表。这个列表的每一条目至少包含三个元素(标题,网址
35、链接,摘要)。“可以接受的时间”,也就是响应时间。对于基于Web的软件来说,这个时间不能太长,通常也就在“秒”这个量级。这是衡量搜索引擎可用性的一个基本指标,也是和传统信息检索系统的一个差别。当用户在检索框中输入要检索的笔记本电脑品牌时,系统将“匹配”与之相对应的结果集。“匹配”,指的是网页中以某种形式包含有q,就是q在其中直接出现。由于Web上的信息量大,而且搜索引擎的查询方式简单。简单,意味着抽象;抽象,意味着有更多的具体事物可能是它的体现。对于一个长长的列表,很少有用户有耐心都审视一遍。因此返回的结果集将会在结果界面返回与用户输入品牌名相同笔记本电脑的信息,并且对其进行分页。图3-1是用
36、户与搜索引擎系统的接口。用户首先在文本框中输入要检索的关键字,然后,单击搜索按钮。图3-1 搜索界面图3-2是搜索引擎系统为用户返回的结果集列表。其中当前页列出了结果集中10条明基电脑的摘要信息。图3-2 界面结果集页面图3-3是用户点击结果集列表中的摘要信息后,跳转的详细信息页面。在此页面中,显示了所选笔记本电脑的详细信息。图3-3 详细信息页面3.2系统模块介绍3.2.1 模块功能介绍现代大规模高质量搜索引擎一般包括三个部分即:网页搜集、预处理和查询服务。鉴于此,“竹竹”搜索引擎系统的模块分为三个子模块,分别为抓取模块,处理模块,用户模块。图3-4是“竹竹”搜索引擎的的系统模块图。搜索引擎
37、系统用户模块抓取模块处理模块图3-4 “竹竹”搜索引擎的的系统模块图(1)抓取网页抓取模块的主要功能是用来将web上的海量网页抓取到系统中;首先“竹竹”搜索引擎是一个网络应用软件系统,这个软件系统操作的数据不仅包括内容不可预测的用户查询,还要包括在数量上动态变化的海量网页,并且这些网页不会主动送到系统来,而是需要由系统去抓取。 首先,考虑抓取的时机:事先情况下,从网上下载一篇网页大约需要1秒钟左右,因此如果在用户查询的时候即时去网上抓来成千上万的网页,一个个分析处理,和用户的查询匹配,不可能满足搜索引擎的响应时间要求。不仅如此,这样做的系统效益也不高(会重复抓取太多的网页);面对大量的用户查询
38、,不可能想象每来一个查询,系统就到网上“搜索”一次。本系统所采用的方式为将海量网页一次性抓取到本地。抓取后,还要对网页进行维护。因为,网页是不断更新变化的,因此要进行定期搜集,每次搜集替换上一次的内容,称之为“批量搜集”。由于每次都是重新来一次,对于大规模搜索引擎来说,每次搜集的时间通常会花几周。而由于这样做开销较大,通常两次搜集的间隔时间也不会很短(例如早期天网的版本大约每3个月来一次,Google在一段时间曾是每隔28天来一次)。最常见的一种是所谓“爬取”:将Web上的网页集合看成是一个有向图,搜集过程从给定起始URL集合S(或者说“种子”)开始,沿着网页中的链接,按照先深、先宽、或者某种
39、别的策略遍历,不停的从S中移除URL,下载相应的网页,解析出网页中的超链接URL,看是否已经被访问过,将未访问过的那些URL加入集合S。整个过程可以形象地想象为一个蜘蛛(spider)在蜘蛛网(Web)上爬行(crawl)。真正的系统其实是多个“蜘蛛”同时在爬。 这种方式的好处除了概念很漂亮,一般实现起来也不困难。任何所谓目标网页指的是搜索引擎设计覆盖的网页范围。搜索引擎是不可能将Web上的网页搜集完全的,通常都是在其他条件的限制下决定搜集过程的结束。由于HTML的灵活性,其中出现URL的方式各种各样,将这个环节做得彻底不容易。同时,由于Web的“蝴蝶结”形状,这种方式搜集到的网页不大会超过所
40、有目标网页数量的2/3。 本系统使用的方法是使用Heritrix来完成对网页的抓取。无论多么强大的搜索引擎工具,在其后台,都需要一样东西来支援它,那就是网络爬虫Spider。网络爬虫,又被称为蜘蛛Spider,或是网络机器人、BOT等,这些都无关紧要,最重要的是要认识到,由于爬虫的存在,才使得搜索引擎有了丰富的资源。Heritrix是一个纯由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。它来自于www.archive.org。Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。本系统就是使用Heritrix来实现抓取模块的
41、。图3-5就是此抓取模块的流程图。图3-5 抓取流程图(2)处理网页信息处理模块的主要功能:1)解析网页,提取其中的有用内容;2)为网页建立词库,由于笔记本电脑的品牌名在现有词库中不存在,因此要建立其特有的词库文件;3)对解析网页生成的信息文件进行分词,并建立索引;4)将索引存入数据库中得到海量的原始网页集合,距离面向网络用户的检索服务之间还有相当的距离。首先,要对原始网页进行分析,将其中的有价值的部分提取出来,在网页中存在着大量无用的信息比如大量的HTML标记。但HTML标记既给网页的预处理造成了一些麻烦,也带来了一些新的机遇。从信息检索的角度讲,如果系统面对的仅仅是内容的文字,我们能依据的
42、就是其内容所包含的关键词集合,最多加上词频(term frequency 或tf、TF)和词在文档集合中出现的文档频率(document frequency 或df、DF)之类的统计量。而TF和DF这样的频率信息能在一定程度上指示词语在一篇文档中的相对重要性或者和某些内容的相关性,这是有意义的。有了HTML标记后,情况还可能进一步改善,例如在同一篇文档中,和之间的信息很可能就比在和之间的信息更重要。当本人利用Heritrix将本人所需要的网页全部抓取下来时,需要将本人所关注的信息从网页中分析出来。因此使用了HTMLParser这个工具来解析网页,并将网页的标题作为索引记录下来;并按照网页的题目
43、(即笔记本电脑的品牌及型号)建立笔记本电脑的信息文件,该信息文件用来保存笔记本电脑的信息,包括笔记本电脑的品牌及型号,笔记本电脑的配置信息,以及与该型号对应的电脑图片。分析完成后要对此信息文件进行建索。在这个部分,需要准备开始将产品详细信息插入到数据库,并建立Lucene的索引,以下是要做的两件事:定义一个Product类作为装载数据的值对象;确定数据库与索引的结构。数据库的处理用JDBC来实现。具体实现步骤为:使用addProduct方法来向数据库中插入记录。addProduct方法的参数是一个Product类型的对象,在此方法中,从Product对象中取出相应的值,然后创建一个Prepar
44、edStaement,来执行JDBC的写入。在写入前,首先调用getNextId方法取得所要插入的这条记录的ID号,并随着方法返回给调用者,以便调用者可以将这个ID传到Lucene的索引中,以次将数据库记录和Lucene的索引对应起来。图3-6就是此建索过程的流程图图3-6 处理模块流程图(3)用户模块用户模块的主要功能:用户模块是系统的用户接口,用户通过此模块完成于系统的交互。当用户在查询界面上输入要检索的品牌信息后,系统将在可以接受的时间内,返回用户所需的结果集。用户通过搜索引擎的查询页面访问到“竹竹”搜索引擎,在查询的文本框中输入要查询的品牌名称,然后,点击查询按钮,系统将到数据库中查询
45、,并将结果集返回。如果,查询不到用户输入的关键字所对应的产品信息,就返回提示信息,提示用户没有于其输入的关键字所对应的结果。用户模块要满足的条件有:1)能够接受用户通过浏览器提交的查询词或者短语,记作q,例如“联想”,“IBM”,“hp”等等。2) 在一个可以接受的时间内返回一个和该用户查询匹配的网页信息列表,记作L。这个列表的每一条目至少包含三个元素(标题,网址链接,摘要)。 “可以接受的时间”,也就是响应时间。对于在Web上面软件来说,这个时间不能太长,通常也就在“秒”这个量级。用例图体现了这一模块与搜索引擎的接口关系。返回结果集输入关键字图3-7 用例图第四章 系统详细设计4.1模块总体
46、介绍从本章开始介绍系统的详细设计。首先,对本系统的结构进行简单的介绍,“竹竹 ”搜索引擎的系统的前端以MVC模式来实现,Spring做中间层,JDBC作后端来开发实现的。系统架构从功能上可以分为前端和后端两部分。在后端流程中,Heritrix从因特网上获取 Web 页面,并解析这些网页,提取出网页中有用的信息生成product文本文件,文件名以产品名产品型号命名。然后索引子系统解析这些 Web 页面并存入索引文件中。并且将product文本文件封装成product对象写入数据库中。在前台流程中,用户在main.jsp中输入关键字后,系统将对关键字进行分词,然后到数据库中查找与其对应的结果集,作
47、为结果列表返回,当用户点击某产品的摘要时,跳转到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)在任务创建页面中