简单搜索引擎分析与开发毕业设计论文.docx
- 文档编号:23107130
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:72
- 大小:653.03KB
简单搜索引擎分析与开发毕业设计论文.docx
《简单搜索引擎分析与开发毕业设计论文.docx》由会员分享,可在线阅读,更多相关《简单搜索引擎分析与开发毕业设计论文.docx(72页珍藏版)》请在冰豆网上搜索。
简单搜索引擎分析与开发毕业设计论文
毕业论文声明
本人郑重声明:
1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。
除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。
对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。
本人完全意识到本声明的法律结果由本人承担。
2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。
本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。
3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。
4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。
论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。
论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。
对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。
学位论文作者(签名):
年月
关于毕业论文使用授权的声明
本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。
本人完全了解大学有关保存,使用毕业论文的规定。
同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。
本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。
如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。
本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。
本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:
按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入学校有关数据库和收录到《中国学位论文全文数据库》进行信息服务。
在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。
论文作者签名:
日期:
指导教师签名:
日期:
武汉工业学院
毕业设计(论文)
设计(论文)题目:
简单搜索引擎分析与开发
业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
第一章绪论5
第一节开发背景5
第二节研究现状5
第三节搜索引擎的发展6
第二章总体设计8
第一节可行性研究8
一、问题的定义8
二、技术可行性8
1、信息收集和存储技术8
2、信息预处理技术8
3、信息索引技术和搜索技术9
三、开发工具9
第二节需求分析9
一、系统基本功能10
二、系统模块组成10
1、网络爬虫模块10
2、索引模块10
3、搜索模块10
4、用户接口11
第三章功能实现11
第一节模块详解11
一、网络爬虫模块11
1、配置Heritrix11
2、定制定向爬虫12
3、创建一个新的抓抓取任务13
4、镜像方式存储16
5、网页预处理16
二、搜索引擎实现模块19
1、整体架构19
2、用户接口20
3、请求servlet21
4、搜索器24
5、索引器24
第四章部署运行25
第一节、运行环境25
第二节、运行效果26
第五章技术难点分析28
第一节中文分词28
一、什么是中文分词28
二、中文分词和搜索引擎28
三、中文分词技术28
四、Lucene3.0中的几种分词系统30
第二节使用中文分词32
第六章总结35
第七章致谢36
摘要
在浩瀚的网络资源中,搜索引擎(SearchEngine)是一种网上信息检索工具,它能帮助用户迅速而全面地找到所需要的信息。
何为搜索引擎?
搜索引擎是指根据一定的策略,运用特定的计算机程序搜集互联网上的信息,在对信息进行处理和组织后,为用户提供检索服务的系统。
本文结合搜索引擎的历史,现状,发展趋势分析一个简单搜索引擎开发的目的和意义、设计思想以及技术实现等。
搜索引擎的原理可以分为四部分:
从互联网上抓取网页,建立索引库,在索引数据库中排序,对搜索结果进行处理和排序。
结合搜索引擎的原理本课题给出了几个重要模块:
Heritrix网络爬虫模块、预处理模块、建立索引模块(index)、查询模块等。
本系统开发平台为Eclipse,采用Java开发语言结合Htmlparper,Lucene完成具体实现,在Web服务器上部署发布。
关键词:
SearchEngine;JAVA;搜索引擎;Web;Heritrix;Lucene;index
Abstracts
Inthevastnetworkofresources,searchengines(SearchEngine)isanonlineinformationretrievaltoolthathelpsuserstoquicklyandcomprehensivelytofindtheinformationtheyneed。
what'sSearchEngine?
SearchengineisbasedoncertainstrategiesandusespecificcomputerprogramstocollectinformationontheInternet,andprovidesearchservicesforusersofthesystemafterorganizationfortheinformation.
Inthearticle,weconcludethehistory,currentsituationanddevelopmenttrendofthesearchengineanddiscussthepurposeandsignificance,designandtechnicalrealizationofasimpleSearchEngine.TheprincipleoftheSearchEnginecanbedividedintofourparts:
Crawledpagesfromtheinternet,Libraryindexing,Sortedintheindexdatabase,Ontheprocessingandsortingsearchresults.CombainingtheprincipleoftheSearchEngine,theissuesgivesseveralimportantmodules:
HeritrixWebcrawlermodule,Pre-processingmodule,Indexingmodule(index),QueryModuleetc.
TheplatformofthissystemisEclipse,JavadevelopmentlanguageusedwithHtmlparper,Lucenecompleterealization,publishedintheWebserverdeployment.
Keywords:
SearchEngine;JAVA;Web;Heritrix;Lucene;index
第一章绪论
第一节开发背景
在中国,搜索引擎逐渐步入人们的生活,并成为人们上网必不可少的一部分,大家熟悉的Google和Baidu是两大著名搜索引擎,而从2005年以来,Google在中国的影响力没有Baidu强,XX的运行模式采用商业运作,即采用商业竞价的模式,网站为了在XX有个好的排名,需要向XX支付一定的费用,相比之下,Google就显得更加慷慨和公平,他采用著名的PageRank算法,为每一个网页根据其关键性计算一个PR值,用于最后的搜索排序,最初的设计只是采用了PageRank作为网页权重的一个标准,后来逐渐有了部分网站使用作弊,比如关键字堆砌、链接循环等,使得完全依靠这种算法已经不能再“公正”下去了,后来Google也意识到这一点,将这个PageRank权值乘以一个小于1的系数再加上其他权值,进行改善后的算法很好的对付了网页作弊行为。
Google和XX两大公司在很多地方都值得互相学习借鉴,比如在输入智能纠错、缓存最近频繁搜索等,Google不但在搜索技术方面做深入研究,还将其技术渗透到其他领域,如浏览器、电子地图还有网页文档在线等,而这些都在很大程度上让Google站在了一个很高的层次,然而为何在中国,他依然是Baidu的下风呢?
李开复诚言:
Google有能力超过Baidu。
究其根源,还是Baidu更加注重了中文的特点,能够很好的对中文进行信息检索。
尽管中国的搜索引擎现在呈现出Google、Baidu二分天下的局面,但是也要看到有很多其他的搜索引擎正在兴起,比如你要用迅雷下电影,就少不了用到gougou,当然gougou最初也是采用的Google的搜索引擎,现在也正在向独立的方向发展。
越来越多的公司也对自己的网站加入了搜索引擎,搜索引擎的发展将逐渐壮大,同时更加个性化的,更加人性化的搜索服务即将出现。
搜索引擎发展十来年,其技术都有了很大的进步,很多技术可以算是成熟,万维网创始人伯纳斯-李曾经说过可能出现一种新的搜索(他说的是语义网搜索)会取代现在蓬勃的Google,其实这种说法也未必不正确,几年前我们在使用搜索引擎的时候,提交关键字需要等几分钟,现在我们只需要等几秒钟,实际上搜索引擎返回结果都设定在1秒以内,这种效果在现在看来,我们觉得很自然,也觉得没有什么大不了,然而让以前的人看来,这个进步是非常大的,然而随着人们生活节奏的加快,我们现在需要依赖搜索引擎的不再是他是否能在1秒以内返回结果(即使在0.00001秒返回结果,人们也不觉得他有多好,毕竟在秒级人们是不能多作些什么的,当然,这对搜索引擎就很有价值了,比如他可以搜索更多的资源),而是希望他返回的结果不再是成千上百的网页链接,我们需要的是在第一页,最好在第一条返回结果就是我们想要的答案!
这就涉及到语义的分析,以及用户模型的建立等技术。
总之,现有搜索引擎技术的进步会随着人们的需求不断地改变,中国的搜索引擎会向一个多元化、个性化、服务化的方向发展,中国经济的兴起会带动更多的搜索引擎不断发展壮大。
第二节研究现状
1.国际著名搜索引擎现状
Google免费搜索引擎。
顶部搜索结果将列入LookSmart,Yahoo,及OpenSourceDirectory.Google非常关注外部链接,如果一个网站有较多质量较好的外部链接,将获得较高的排名。
它的AdWords/AdSelect也将作为查询结果显示。
AOLSearch从Google搜索数据库中获得查询结果。
想在AOL中获得好的排名应该关注Google的排名规则。
BaiduXX的运行模式采用商业运作,即采用商业竞价的模式,网站为了在XX有个好的排名,需要向XX支付一定的费用
2.各种搜索引擎的不足之处
(1)大多数中文搜索引擎的查询方式比较单一
一般搜索引擎只提供分类浏览的查询方式和关键词全文检索方式,缺乏其他途径的查询方式,并且关键词全文检索方式也比较简单。
(2)目前网上的中文信息较少
相对于网上的外文资源而言,网上的中文信息资源较少,而且ISP中文站点的质量也是良莠不齐,信息更新的速度慢。
通常是几个月才有所更新。
而对搜索引擎而言,ISP站点的内容的质量也是十分的重要,它和搜索引擎之间是鱼水的关系。
本课题主要在于研究一个简单搜索引擎的构成,以及实现技术。
第三节搜索引擎的发展
目前各种各样的中文搜索引擎越来越多,发展速度也越来越快。
每个搜索引擎都有各自的特点,但从目前来说,中文搜索引擎的发展呈现以下的趋势。
1.支持目录式分类结构和全文检索
分类搜索引擎的优点是将信息系统地归类,可以使用户清晰方便地查找到某一大类信息,这符合传统的信息查找方式,但目录式搜索引擎的搜索范围较全文搜索引擎小许多,尤其是当用户选择类型不当时,有可能遗漏某些重要的信息源
全文搜索引擎的优点是查询全面而充分,用户能够对各网站的每篇文章中的每个词进行检索。
全文搜索引擎真正提供了用户对Internet上所有资源进行检索的手段,给用户以最全面最广泛的搜索结果。
但全文搜索引擎的缺点是由于没有分类式搜索引擎那样清晰的层次结构,有时给人一种繁多而杂乱的感觉。
理想的搜索引擎是能在目录式分类结构下实现全文检索,将分类检索和全文检索的优点结合起来。
2.采用分布式体系结构提高系统规模和性能
搜索引擎的实现可以采用集中式体系结构和分布式体系结构,两种方法各有千秋。
但当系统规模到达一定的程度时,必然要采用某种分布式方法,以提高系统性能。
搜索引擎的各个组成部分,除了用户接口之外,都可以进行分布式:
搜索器可以在多台机器上相互合作,相互分工进行信息发现,以提高信息发现和更新速度;索引器可以将索引分布在不同的机器上,以减小索引对机器的要求;检索器可以在不同的机器上进行文档的并行检索,以提高检索的速度和性能。
3.注意提高信息查询结构的精度,提高检索的有效性
用户在搜索引擎上进行信息查询时,并不十分关注返回结果的多少,而是看结果是否符合自己的需求。
对于一个查询,传统的搜索引擎返回十几万,几百万信息文档,用户不得不在结果中筛选。
解决查询结果过多的现象出现了几种方法。
一是通过各种方法获得用户没有在查询语句中表达出来的真正用途,包括使用智能代理跟踪用户检索行为,分析用户模型;使用相关度反馈机制,使用户告诉搜索引擎哪些文档是和自己需求相关,哪些不相关,通过多次交互逐步求精。
二是用正文分类技术将结果分类,使用可视化技术显示分类结构,用户可以只浏览自己感兴趣的类别。
三是进行站点类聚或内容类聚,减少信息的总量。
4.能够区分搜索结果的相关性
搜索引擎应该能够找到与搜索要求相关的站点,并按期相关程度将搜索结果排序。
这里的相关度是指搜索关键字在文档中出现的频度,当频度越高时,则认为该文档的相关程度越高。
5.增加服务功能,提供全方位的信息服务
许多搜索引擎都提供优秀中文站点推荐,天气预报,股市信息,免费电子邮箱,新闻邮件以及新闻讨论组等多种服务,以多种形式满足读者的需求。
第二章总体设计
第一节可行性研究
一、问题的定义
搜索引擎(searchengine)是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。
搜索引擎并不是真正搜索互联网,它搜索的实际上是预先整理好的网页索引数据库。
真正意义上的搜索引擎,通常指的是收集互联网上几千万到几十亿个网页并对网页中的每一个词(即关键字)进行索引,建立索引数据库的全文搜索引擎。
当用户查找某个关键词的时候,所有的页面内容中包含了该关键词的网页都将作为搜索结果被搜索出来,在经过复杂的算法进行排序后,这些结果将按照与搜索关键词的相关度高低,依次排列。
搜索引擎的原理,可以分为4步:
从互联网上抓取网页,建立索引数据库,在索引数据库中搜索排序,对搜索结果进行处理和排序。
二、技术可行性
1.信息收集和储存技术
网上信息收集和存储一般分为人工和自动两种方式。
自动方式通常是由网络机器人来完成的,每个独立的搜索引擎都有自己的网页抓取程序(网络机器人spider)。
“网络机器人”是一种自动运行的软件,其功能是搜索因特网上的网站或网页。
Spider顺着网页中的超链接,连续地抓取网页。
被抓取的网页被称之为网页快照。
由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。
2.信息预处理技术
信息预处理包括信息格式支持与转换以及信息过滤。
目前,因特网上的信息发布格式多种多样,这就要求搜索引擎支持多种文件格式。
从实际情况看,所有搜索引擎都支持HTML格式,而对于其他文件格式的支持则不同的搜索引擎有不同的规定,最多的能支持200多种文件格式。
在因特网中,存在大量的无用信息,一个好的搜索引擎应当尽量减少垃圾站的的数量,这就是信息过滤要着重解决的问题。
在预处理中最重要的就是提取关键词,建立索引文件。
其他还包括去除重复网页、分词(中文)、判断网页类型、分析超链接、计算网页的重要度/丰富度等。
3.信息索引技术和搜索技术
信息索引是创建文档信息的特征记录,以使用户能够快速的检索到所需信息,建立索引主要涉及以下几个问题:
(1)信息语词切分和语词词法分析
(2)进行词性标注及相关的自然语言处理
(3)建立检索项索引
(4)检索结果处理技术
三、系统开发工具
(一)开发工具选择
在前端流程中,用户在搜索引擎提供的界面中输入要搜索的关键词,这里提到的用户界面一般是一个带有输入框的Web页面,然后应用程序将搜索的关键词解析成搜索引擎可以理解的形式,并在索引文件上进行搜索操作。
在排序后,搜索引擎返回搜索结果给用户。
在后端流程中,网络爬虫从因特网上获取Web页面,对这些web页面进行预处理,然后索引模块解析这些Web页面并存入索引文件中。
如图2-3-1
图2-3-1
⏹ Lucene是基于Java的全文信息检索包,它目前是ApacheJakarta家族下面的一个开源项目。
⏹Lucene很强大,但是,无论多么强大的搜索引擎工具,在其后台,都需要一样东西来支援它,那就是网络爬虫Spider。
网络爬虫,又被称为蜘蛛Spider,或是网络机器人、BOT等,这些都无关紧要,最重要的是要认识到,由于爬虫的存在,才使得搜索引擎有了丰富的资源。
⏹Heritrix是一个纯由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。
它来自于www.archive.org。
Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。
第二节需求分析
搜索引擎是个较为复杂的工程,开发设计前必须弄清楚各个环节的流程及相互关系,这样才能进行系统的整体设计和深入开发。
总的来说,整个搜索引擎主要由搜索器,索引器,检索器和用户接口四大部分组成。
一、系统基本功能
用户登录到这个搭建好的网站上,输入所期望获取的信息的关键字后,搜索引擎会返回给用户一系列包含用户输入的关键字的网页地址,网页标题,以及网页摘要等,用户可以从显示的查询结果信息中选中一个标题,双击可以浏览所选定的网页信息。
二、系统模块组成
经过深入调查和研究本课题初步确定了如下功能需求模块:
1、网络爬虫模块
网页搜集
作为网页搜集的重要组成部分—网络爬虫,该系统采用了开源软件heritrix1.14.1.
对heritrix的源码进行分析,并做了适当的扩展以适应该课题的需求。
该系统从
网页预处理
网页预处理是在网页搜集完成之后进行的。
在得到海量的原始网页集合后,还无法直接利用这些原始网页来提供检索服务。
因为这些原始网页中,包含了大量的HTML标记,事实上,这些标记的数据量远远大于网页内容的数据量。
在本系统中,需要为网页程序指定一个存放处理好的网页位置,具体路径在config.properties中配置。
2、索引模块
索引器的功能是理解搜索器所搜索的信息,由分析索引模块程序对收集回来的页面进行分析,提取相关网页信息(包括网页所在的URL,编码类型,摘要,关键词等),根据一定的相关度算法进行大量复杂的计算,得到每一个页面针对网页内容中及超链接中每一个关键词的相关度,然后用这些相关信息建立网页索引。
3、搜索模块
当用户输入关键词后,有搜索模块程序从网页索引中找到符合该关键词的所有相关网页。
因为所有相关网页针对该关键词的相关度早已算好,所以只需按照现成的相关度数值排序,相关度越高,排名越靠前,最后由用户接口将搜索结果的链接地址和网页内容摘要等内容组织起来返回给用户。
4、用户接口
用户接口的作用是输入用户查询,显示查询结果,提示用户相关性反馈机制。
用户接口的主要目的是方便用户使用搜索引擎,高效率,多方式地从搜索引擎中得到有效,及时的信息。
第三章功能实现
第一节系统模块详解
一、网络爬虫模块
Spider又叫WebCrawler或者Robot,是一个沿着链接漫游Web文档集合的程序。
它一般驻留在服务器上,通过给定的一些URL,利用HTTP等标准协议读取相应文档,然后以文档中包括的所有未访问过的URL作为新的起点,继续进行漫游,直到没有满足条件的新URL为止。
WebCrawler的主要功能是自动从Internet上的各Web站点抓取Web文档并从该Web文档中提取一些信息来描述该Web文档,为搜索引擎站点的数据库服务器追加和更新数据提供原始数据,这些数据包括标题、长度、文件建立时间、HTML文件中的各种链接数目等。
网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。
深度优先在很多情况下会导致爬虫的陷入(trapped)问题,目前常见的是广度优先和最佳优先方法。
广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。
该算法的设计和实现相对简单。
在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。
也有很多研究将广度优先搜索策略应用于聚焦爬虫中。
其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。
另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。
这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。
最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 搜索引擎 分析 开发 毕业设计 论文