搜索引擎的设计与实现.docx
《搜索引擎的设计与实现.docx》由会员分享,可在线阅读,更多相关《搜索引擎的设计与实现.docx(41页珍藏版)》请在冰豆网上搜索。
搜索引擎的设计与实现
学校代码:
10128
学号:
040201015
本科毕业设计说明书
题目:
搜索引擎的设计与实现
学生姓名:
庞佳
学院:
信息工程学院
系别:
计算机
专业:
计算机科学与技术
班级:
计算机04-2
指导教师:
苏依拉副教授
钱庭荣工程师
二〇〇八年六月
摘要
为了适应网络信息的飞速增长,并且能够迅速、方便地从网络中获取有效信息,搜索引擎逐渐走进了人们的生活,“竹竹”搜索引擎系统在这样的条件下,应运而生。
本文首先系统的介绍了搜索引擎的概念、发展历史、和搜索引擎的分类。
使读者能够初步了解搜索引擎技术。
然后,详细介绍了“竹竹”搜索引擎系统。
“竹竹”搜索引擎是基于Web的,面向笔记本电脑品牌的搜索引擎。
系统的前端以MVC模式来实现,Spring做中间层,JDBC作后端来开发实现的。
本系统分为三个子模块,抓取模块实现的功能为:
将web上的海量网页抓取到系统中;采用的实现方法是使用Heritrix来完成对网页的抓取。
处理模块实现的功能为:
解析网页,提取其中的有用内容,为网页建立词库,由于笔记本电脑的品牌名在现有词库中不存在,因此要建立其特有的词库文件,对解析网页生成的信息文件进行分词,并建立索引,将索引存入数据库中;采用的实现方法是:
通过Lucene的API来实现对网页内容的建索,使用HTMLParser的API实现了对网页内容的解析。
用户模块实现的主要功能是:
用户模块是系统的用户接口,用户通过此模块完成与系统的交互,当用户在查询界面上输入要检索的品牌信息后,系统将在可以接受的时间内,返回用户所需的结果集;采用的实现方法是:
通过DWR封装了AJAX技术,处理用户请求;通过Lucene的API来实现检索。
关键词:
搜索引擎;Lucene;Heritrix
Abstract
Inordertoadapttotherapidgrowthofinformationnetworks,andcanquicklyandeasilyaccesstoinformationfromthenetwork,searchenginesgraduallycomeintopeople'slives,"zhuzhu"searchenginesystemisbuildedinsuchconditions.
Thispaperfirstintroducedthesystem,theconceptofsearchengines,thedevelopmentofhistory,andsearchenginescategory.Sothatreaderscanunderstandthesearchenginetechnology.Then,detailsofthe"zhuzhu"searchenginesystem.
"zhuzhu"searchengineisaWeb-based,brand-orientednotebookcomputersearchengine.Thefront-endsystemismadebymodelMVC,Springtothemiddlelayer,JDBCfortheback-end.Thesystemisdividedintothreesub-module,crawlmodulefortherealizationofthefunctions:
Massiveonthewebpagetocrawlintothesystem;usingthemethodisusedtorunningHeritrix.Processingmodulefortherealizationofthefunctions:
Analysisofthepage,whichextractusefulcontent,pagesthesaurus,becausethebrandofnotebookcomputersavailableinthethesaurusdoesnotexist,toestablishitsuniquelexicondocuments,analysisofthepageInformationgeneratedbyWorddocuments,andindex,theindexwillbedepositedinthedatabase;methodisused:
LuceneAPItoachievethecontentofthecableconstruction,theuseoftheAPIHTMLParserachievethewebcontentanalysis.Usermoduletoachievethemainfunctionsare:
theusermoduleistheuserinterface,theuserthroughthecompletionofthismoduleinteractivesystem,whenauserinterfaceforinputtothebrandinformationretrievalsystem,thesystemwillbeacceptabletime,Backtotheuserrequirementssetofresults;usingthemethodis:
throughthepackagetheDWRAJAXtechnology,processinguserrequeststhroughtheLuceneAPItoachievesearch.
Keywords:
searchengine;Lucene;Heritrix
引言
随着互联网的不断发展和日益普及,信息技术的不断发展,网上的信息量在爆炸性增长,这已经深入到了人们生活的各个方面,改变了人们生活方式和思维方式,方便了全球信息资源共享。
在2004年4月,全球Web页面的数目已经超过40亿,中国的网页数估计也超过了3亿。
要在如此浩瀚的海洋里寻找信息,就像“大海捞针”一样,能有一种工具使我们可以迅速找到我们想要的内容吗?
答案是“有”,这就是搜索引擎。
著名的因特网搜索引擎包括Baidu、Google、Sohu等。
由于笔记本电脑的使用和风靡,有关笔记本电脑的检索也随之增多。
因此,为了使用户能够更加简单,快捷的检索笔记本电脑,“竹竹”搜索引擎系统实现了这种需求。
搜索引擎(SearchEngine)就是指在WWW(WorldWideWeb)环境中能够响应用户提交的搜索请求,返回相应的查询结果信息的技术和系统,是互联网上的可以查询网站或网页信息的工具。
它包括信息搜集、信息整理和用户查询三部分。
“竹竹”搜索引擎系统实现了自动将Web上的海量网页抓取到本地。
然后解析网页,提取其中的有用内容,为网页建立词库(由于笔记本电脑的品牌名在现有词库中不存在,因此要建立其特有的词库文件),对解析网页生成的信息文件进行分词,并建立索引,将索引存入数据库中。
“竹竹”搜索引擎系统为用户提供了简洁的查询页面,用户通过此界面完成与系统的交互。
当用户在查询界面上输入要检索的品牌信息后,系统将在可以接受的时间内,返回用户所需的结果集。
因此,本系统实现了搜索引擎的基本功能,能够使用户可以简单,快捷,精确的对笔记本电脑品牌进行检索。
第一章课题背景
1.1搜索引擎的概念
由于网络信息的飞速增长,我们不得不面对浩瀚的网络资源,这极大地改变了人们获取信息的方式,面对浩如烟海的网络信息,如何才能迅速、方便地获取有效信息,日益成为人们关心的问题,搜索引擎的出现极大地缓解了这一矛盾。
它为所有网上冲浪的用户提供了一个入口,毫不夸张的说,所有的用户都可以从搜索出发到达自己想去的网上任何一个地方。
因此它也成为除了电子邮件以外最多人使用的网上服务。
搜索引擎是一种应用在Web上的,为用户提供检索服务的软件系统,它以一定的策略在Web上搜集和发现信息,并对信息进行分析、提取、组织等处理后形成供检索用的数据库。
从使用者的角度看,这种软件系统提供一个网页界面,让他通过浏览器提交一个词语或者短语,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度,出现的位置/频次,链接质量等——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。
这个与用户输入内容相关的信息列表(常常会是很长一个列表,例如包含1万个条目)。
这个列表中的每一条目代表一篇网页,至少有3个元素:
(1)标题:
以某种方式得到的网页内容的标题。
最简单的方式就是从网页的
标签中提取的内容。
(尽管在一些情况下并不真正反映网页的内容)。
(2)URL:
该网页对应的“访问地址”。
有经验的Web用户常常可以通过这个元素对网页内容的权威性进行判断,例如上面的内容通常就比(某个假想的个人网站)上的要更权威些(不排除后者上的内容更有趣些)。
(3)摘要:
以某种方式得到的网页内容的摘要。
最简单的一种方式就是将网页内容的头若干字节(例如512)截取下来作为摘要。
通过浏览这些元素,用户对相应的网页是否真正包含他所需的信息进行判断。
比较肯定的话则可以点击上述URL,从而得到该网页的全文。
搜索引擎提供信息查询服务的时候,它面对的只是查询词。
而有不同背景的人可能提交相同的查询词,关心的是和这个查询词相关的不同方面的信息,但搜索引擎通常是不知道用户背景的,因此搜索引擎既要争取不漏掉任何相关的信息,还要争取将那些“最可能被关心”的信息排在列表的前面。
这也就是对搜索引擎的根本要求。
除此以外,考虑到搜索引擎的应用环境是Web,因此对大量并发用户查询的响应性能也是一个不能忽略的重要性能指标。
1.2搜索引擎的发展历史
1.2.1搜索引擎的起源
所有搜索引擎的祖先,是1990年由Montreal的McGillUniversity三名学生(AlanEmtage、PeterDeutsch、BillWheelan)发明的Archie(ArchieFAQ)。
AlanEmtage等想到了开发一个可以用文件名查找文件的系统,于是便有了Archie。
Archie是第一个自动索引互联网上匿名FTP网站文件的程序,但它还不是真正的搜索引擎。
Archie是一个可搜索的FTP文件名列表,用户必须输入精确的文件名搜索,然后Archie会告诉用户哪一个FTP地址可以下载该文件。
世界上第一个Spider程序,是MITMatthewGray的WorldwideWebWanderer,用于追踪互联网发展规模。
刚开始它只用来统计互联网上的服务器数量,后来则发展为也能够捕获网址(URL)
1.2.2第一代搜索引擎
第一代搜索引擎出现于1994年。
这类搜索引擎一般都索引少于1,000,000个网页,极少重新搜集网页并去刷新索引。
而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。
在实现技术上也基本沿用较为成熟的IR(InformationRetrieval)、网络、数据库等技术,相当于利用一些已有技术实现的一个WWW上的应用。
1994年4月,斯坦福大学的两名博士生,美籍华人杨致远和DavidFilo共同创办了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公司总裁LarryPage的演讲,Google正在用3,000台运行Linux系统的个人电脑在搜集Web上的网页,而且以每天30台的速度向这个微机集群里添加电脑,以保持与网络的发展相同步。
每台微机运行多个爬虫程序搜集网页的峰值速度是每秒100个网页,平均速度是每秒48.5个网页,一天可以搜集超过4,000,000网页搜索引擎一词在国内外因特网领域被广泛使用,然而他的含义却不尽相同。
在美国搜索引擎通常指的是基于因特网的搜索引擎,他们通过网络机器人程序收集上千万到几亿个网页,并且每一个词都被搜索引擎索引,也就是我们说的全文检索。
著名的因特网搜索引擎包括FirstSearch、Google、HotBot等。
1997年8月,Northernlight搜索引擎正式现身。
它曾是拥有最大数据库的搜索引擎之一,它没有StopWords,它有出色的CurrentNews、7100多出版物组成的SpecialCollection、良好的高级搜索语法,第一个支持对搜索结果进行简单的自动分类。
1.2.4当前著名的搜索引擎简介
1998年10月之前,Google只是斯坦福大学(StanfordUniversity)的一个小项目BackRub。
1995年博士生LarryPage开始学习搜索引擎设计,于1997年9月15日注册了的域名,1997年底,在SergeyBrin和ScottHassan、AlanSteremberg的共同参与下,BachRub开始提供Demo。
1999年2月,Google完成了从Alpha版到Beta版的蜕变。
Google公司则把1998年9月27日认作自己的生日。
Google以网页级别(Pagerank)为基础,判断网页的重要性,使得搜索结果的相关性大大增强。
Google公司的奇客(Geek)文化氛围、不作恶(Don’tbeevil)的理念,为Google赢得了极高的口碑和品牌美誉。
2006年4月,Google宣布其中文名称“谷歌”,这是Google第一个在非英语国家起的名字。
1996年8月,sohu公司成立,制作中文网站分类目录,曾有“出门找地图,上网找搜狐”的美誉。
随着互联网网站的急剧增加,这种人工编辑的分类目录已经不适应。
sohu于2004年8月独立域名的搜索网站“搜狗”,自称“第三代搜索引擎”。
2000年1月,两位北大校友,超链分析专利发明人、前Infoseek资深工程师李彦宏与好友徐勇(加州伯克利分校博士后)在北京中关村创立了XX(Baidu)公司。
2001年8月发布B搜索引擎Beta版(此前Baidu只为其它门户网站搜狐新浪Tom等提供搜索引擎),2001年10月22日正式发布Baidu搜索引擎,专注于中文搜索。
Baidu搜索引擎的其它特色包括:
XX快照、网页预览/预览全部网页、相关搜索词、错别字纠正提示、mp3搜索、Flash搜索。
2002年3月闪电计划(BlitzenProject)开始后,技术升级明显加快。
后推出贴吧、知道、地图、国学、百科、文档、视频、博客等一系列产品,深受网民欢迎。
2005年8月5日在纳斯达克上市,发行价为USD27.00,代号为BIDU。
开盘价USD66.00,以USD122.54收盘,涨幅353.85%,创下了5年以来美国股市上市新股当日涨幅最高纪录。
2003年12月23日,原慧聪搜索正式独立运做,成立了中国搜索。
2004年2月,中国搜索发布桌面搜索引擎网络猪1.0,2006年3月中搜将网络猪更名为IG(InternetGateway)。
1.3搜索引擎的分类
1.3.1全文索引
全文搜索引擎是名副其实的搜索引擎,国外代表有Google,国内则有著名的XX搜索。
它们从互联网提取各个网站的信息(以网页文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。
根据搜索结果来源的不同,全文搜索引擎可分为两类,一类拥有自己的检索程序(Indexer),俗称“蜘蛛”(Spider)程序或“机器人”(Robot)程序,能自建网页数据库,搜索结果直接从自身的数据库中调用,上面提到的Google和XX就属于此类;另一类则是租用其他搜索引擎的数据库,并按自定的格式排列搜索结果,如Lycos搜索引擎。
1.3.2目录索引
目录索引虽然有搜索功能,但严格意义上不能称为真正的搜索引擎,只是按目录分类的网站链接列表而已。
用户完全可以按照分类目录找到所需要的信息,不依靠关键词(Keywords)进行查询。
目录索引中最具代表性的莫过于大名鼎鼎的Yahoo、新浪分类目录搜索。
1.3.3元搜索引擎
1995年,一种新的搜索引擎形式出现了——元搜索引擎(MetaSearchEngine)。
用户只需提交一次搜索请求,由元搜索引擎负责转换处理后提交给多个预先选定的独立搜索引擎,并将从各独立搜索引擎返回的所有查询结果,集中起来处理后再返回给用户。
第一个元搜索引擎,是Washington大学硕士生EricSelberg和OrenEtzioni的Metacrawler。
元搜索引擎(METASearchEngine)接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户。
著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。
在搜索结果排列方面,有的直接按来源排列搜索结果,如Dogpile;有的则按自定的规则将结果重新排列组合,如Vivisimo。
1.3.4垂直搜索引擎
垂直搜索是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户。
相对通用搜索引擎的信息量大、查询不准确、深度不够等提出来的新的搜索引擎服务模式,通过针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。
其特点就是“专、精、深”,且具有行业色彩,相比较通用搜索引擎的海量信息无序化,垂直搜索引擎则显得更加专注、具体和深入。
1.3.5其他非主流搜索引擎形式
(1)集合式搜索引擎
该搜索引擎类似元搜索引擎,区别在于它并非同时调用多个搜索引擎进行搜索,而是由用户从提供的若干搜索引擎中选择,如HotBot在2002年底推出的搜索引擎。
(2)门户搜索引擎
AOLSearch、MSNSearch等虽然提供搜索服务,但自身既没有分类目录也没有
网页数据库,其搜索结果完全来自其他搜索引擎。
(3)免费链接列表(FreeForAllLinks简称FFA)
一般只简单地滚动链接条目,少部分有简单的分类目录,不过规模要比Yahoo!
等目录索引小很多。
以上简要介绍了搜索引擎的概念,发展历史,分类以及工作原理,相信大家对搜索引擎已经有了初步的了解和认识,下面以“竹竹”搜索引擎为例,介绍大规模搜索引擎的工作原理和实现技术。
第二章系统需求分析
2.1搜索引擎的工作原理
为了帮助大家更好的理解本系统,首先向大家介绍一下搜索引擎的工作原理。
搜索引擎系统由三部分构成:
信息搜集模块、分析索引模块和检索服务模块。
信息搜集模块采用一种像真人一样可以浏览网页的Robot程序,这类程序能自动地在网上漫游,从一个或一组URL开始访问,然后下载相应的网页,抽取页面中的链接,按照某种算法决定下一步要访问的URL地址,常用的算法有广度优先和深度优先。
Robot(机器人)一词对编程者有特殊的意义。
ComputerRobot是指某个能以人类无法达到的速度不断重复执行某项任务的自动程序。
由于专门用于检索信息的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的,面向笔记本电脑品牌的搜索引擎。
由于笔记本电脑的使用和风靡,有关笔记本电脑的检索也随之增多。
因此,为了使用户能够更加简单,快捷的检索笔记本电脑,设计实现了“竹竹”搜索引擎。
对它有如下基本要求:
能够接受用户通过浏览器提交的查询词或者短语。
在一个可以接受的时间内返回一个和该用户查询匹配