简单搜索引擎分析与开发毕业论文Word格式.docx

上传人:b****1 文档编号:437803 上传时间:2023-04-28 格式:DOCX 页数:42 大小:633.70KB
下载 相关 举报
简单搜索引擎分析与开发毕业论文Word格式.docx_第1页
第1页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第2页
第2页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第3页
第3页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第4页
第4页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第5页
第5页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第6页
第6页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第7页
第7页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第8页
第8页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第9页
第9页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第10页
第10页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第11页
第11页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第12页
第12页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第13页
第13页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第14页
第14页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第15页
第15页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第16页
第16页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第17页
第17页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第18页
第18页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第19页
第19页 / 共42页
简单搜索引擎分析与开发毕业论文Word格式.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

简单搜索引擎分析与开发毕业论文Word格式.docx

《简单搜索引擎分析与开发毕业论文Word格式.docx》由会员分享,可在线阅读,更多相关《简单搜索引擎分析与开发毕业论文Word格式.docx(42页珍藏版)》请在冰点文库上搜索。

简单搜索引擎分析与开发毕业论文Word格式.docx

4、搜索器24

5、索引器24

一、什么是中文分词28

四、Lucene3.0中的几种分词系统30

第二节使用中文分词32

第七章致谢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:

Web;

第一章绪论

第一节开发背景

在中国,搜索引擎逐渐步入人们的生活,并成为人们上网必不可少的一部分,大家熟悉的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与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。

它只访问经过网页分析算法预测为“有用”的网页。

存在的一个问题是,在爬虫抓取路径上的很多相关网页可能被忽略,因为最佳优先策略是一种局部最优搜索算法。

因此需要将最佳优先结合具体的应用进行改进,以跳出局部最优点。

(一)配置Heritrix的开发环境

Heritrix在Eclipse中的工程配置好后的截图,以及workspace中文件夹的预览如图3-1-1,图3-1-2

图3-1-1

图3-1-2

(二)修改Heritrix源码,定制自己的定向爬虫

有时候,需要指定抓取某一类网页,例如,仅仅需要抓取含有某一字符串的URL,这个时候,单纯通过设置Heritrix,就无法满足需求。

Heritrix留下了相应的接口,可以通过实现某些特定的接口,来实现对Heritrix的定制,完成更复杂的搜索任务

org.archive.crawler.postprocessor,FrontierScheduler中的innerProcess(finalCrawlURLcuri)方法的作用实际上是直接将当前的候选链接加入到抓取队列当中。

在本课题设计中,构造一个FrontierScheduler的派生类,叫做FrontierSchedulerForWhua,这个类重载了schedule(cauri)这个方法,在重载的方法中加入一些对链接内容的判断,以保证抓取的链接是我定制的。

FrontierSchedulerForWhua的重载schedule(cauri)如下:

packageorg.archive.crawler.postprocessor;

importorg.archive.crawler.datamodel.CandidateURI;

publicclassFrontierSchedulerForWhuaextendsFrontierScheduler{

publicFrontierSchedulerForWhua(Stringname){

super(name);

//TODOAuto-generatedconstructorstub

}

protectedvoidschedule(CandidateURIcaUri){

Stringuri=caUri.toString();

if(uri.indexOf("

dns:

"

)!

=-1){

getController().getFrontier().schedule(caUri);

}elseif(uri.indexOf("

.sina"

=-1&

&

(uri.indexOf("

.html"

=-1

||uri.indexOf("

.htm"

.jsp"

.asp"

.aspx"

.php"

=-1)){

}

}

(三)创建一个新的抓取任务

在Eclipse下运行org.archive.crawler.Heritrix类,看到了Heritrix成功运行后的WebUI,创建一个新的抓取作务。

1)单击WebUI菜单栏上的“Jobs”标签,就可以进入任务创建页面,如图3-1-3。

图3-1-3

2)设置抓取时的处理链

需要配置的内容共有7项,其中CrawlScope和Frontier是两个最重要的组件。

CrawlScope用于配置当前应该在什么范围内抓取网页链接。

比如,如果选择BroadScope,则表示当前抓取的范围不受限制,但如果选择了HostScope,则表示抓取的范围在当前的Host内。

现在需要注意的是,在PostPrecessors选项中,不要选择o

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2