全文搜索引擎技术研究与实现.docx

上传人:b****3 文档编号:26414887 上传时间:2023-06-19 格式:DOCX 页数:43 大小:798.95KB
下载 相关 举报
全文搜索引擎技术研究与实现.docx_第1页
第1页 / 共43页
全文搜索引擎技术研究与实现.docx_第2页
第2页 / 共43页
全文搜索引擎技术研究与实现.docx_第3页
第3页 / 共43页
全文搜索引擎技术研究与实现.docx_第4页
第4页 / 共43页
全文搜索引擎技术研究与实现.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

全文搜索引擎技术研究与实现.docx

《全文搜索引擎技术研究与实现.docx》由会员分享,可在线阅读,更多相关《全文搜索引擎技术研究与实现.docx(43页珍藏版)》请在冰豆网上搜索。

全文搜索引擎技术研究与实现.docx

全文搜索引擎技术研究与实现

编号

毕业设计(论文)

 

题目全文搜索引擎技术研究与实现

二级学院计算机科学与工程学院

专业计算机科学与技术

班级107030703

学生姓名学号10703070313

指导教师职称讲师

时间2011.6

 

摘要

随着互联网的不断发展和日益普及,网络成为信息极其重要的来源地,越来越多的人从网络上获取自己所需要的信息,网上的信息量在爆炸式增长,如何在最短时间内找到我们所需要的资料就成了一个非常关键的问题。

为了解决这个问题,Web搜索引擎就随之出现了,并得到了飞速发展,使得像Google,XX这样的通用搜索引擎变成了人们寻找信息必不可少的工具,搜索引擎现在也已经成为互联网上仅次于电子邮件的第二大网络服务。

本文论述了搜索引擎的开发背景以及搜索引擎的历史和发展趋势,分析了搜索引擎的开发需求,在深入研究了通用搜索引擎基本原理、架构设计和核心技术的基础上,结合搜索引擎的需求,构建了一个运行稳定,性能良好而且可扩充的搜索引擎系统,本文不仅仅完成了对整个系统的设计,对系统开发中的一些关键技术问题,都给出了解决方案(包括网络爬虫、倒排索引、信息检索及结果排序等,这些技术将被应用到文中提出的系统设计方案中),并且完成了所有的编码实现工作。

关键词:

搜索引擎,网络爬虫,倒排索引,信息检索

 

Abstract

AlongwiththecontinuousdevelopmentoftheInternetandgrowingpopularity,networkbecomesanextremelyimportantsourceofinformation,moreandmorepeoplefromthenetworktoobtaintheinformationtheyneed,andtheamountofinformationonlineintheexplosivegrowth,Howtofindtheshortestpossibletimetheinformationweneedtobecomeaverycriticalissue.Tosolvethisproblem,Websearchenginesappearedonthesubsequent,andhasbeentherapiddevelopmentof,makelikeGoogle,Baidu,intoageneralsearchengineindispensabletoolforpeopletofindinformation,searchenginesarenowsecondonlytoe-mailontheInternethasbecomethesecondlargestInternetservice.

Thisarticlediscussesthebackgroundanddevelopmentofsearchenginesearchenginehistoryandtrends,analysisofthesearchengine'sdevelopmentneeds,indepthstudyofthebasicprinciplesofgeneralsearchengines,architecturedesignandcoretechnologyonthebasisof,withtheneedsofsearchengine,constructastable,goodperformanceandscalablesearchenginesystem.Thispapernotonlycompletedthedesignofthewholesystem,forsystemdevelopment,somekeytechnicalissueshavegivensolutions(includingwebcrawl,invertedindex,informationretrieval,andresultranking,thesetechnologieswillbeappliedtothesystemproposedinthispaperthedesignproject),andcompletedallthecodingandimplementationwork.

Keywords:

searchengine,webcrawl,invertedindex,informationretrieve

1绪论

1.1搜索引擎的出现背景及意义

随着计算机技术和网络技术的飞速发展,特别是Web技术的刺激和Internet的商业化,网络所能提供给人们的信息量越来越大,网上的信息几乎是呈指数级增长。

当前,万维网上约有875万个网站,25亿网页,190亿字节以上的网页数据。

同时,网页数量正以每天750万的速度净增长。

然而由于信息资源组织的杂乱性和信息资源的动态性,使得用户要在信息海洋里查找信息,就像大海捞针一样,在没有搜索引擎的时代,用户希望寻找某方面的信息,就必须通过各种途径或者是网站之间的连接寻找,可以这样说,脱离的搜索引擎的网站,就像是信息海洋中的一个一个的孤岛,用户必将面临巨大的搜索成本,同时必须付出大量的时间和精力。

搜索引擎恰好解决了这一难题。

搜索引擎(SearchEngine)通常指的是基于因特网的搜索引擎,它通过网络机器人程序以一定的策略在互联网中搜集、发现信息,收集上千万到几亿个网页,对信息进行理解、提取、组织和处理,每一个词都会被搜索引擎索引,也就是我们说的全文检索,并为用户提供检索服务,从而起到信息导航的目的。

它将这些信息孤岛联系起来,形成了一张巨大的信息网,并且运用分布式计算的巨大力量,能够让用户从海量数据中摒除垃圾信息,获取想要的知识。

搜索引擎不仅仅是节省了用户的时间,通过挖掉搜寻成本这座墙,它让许许多多的不可能成为可能。

搜索引擎提供的导航服务已经成为互联网上非常重要的网络服务,目前国内的Web信息资源数量已经相当可观,搜索引擎的发展也是非常迅猛,国内外的调查结果都表明,当前互联网上仅次于收发电子邮件的第二大应用就是在网上搜索信息,因此,搜索引擎已经成为软件业研究的热点之一,本文所研究的搜索引擎便是基于因特网的搜索引擎。

1.2现阶段搜索引擎的研究现状

搜索引擎(SearchEngine),是一个对互联网信息资源进行搜索整理和分类,并储存在网络数据库中供用户查询的系统。

搜索引擎根据检索规则和从其他信息服务器上得到数据并对数据进行加工处理,能够自动对万维网(WorldWideWeb)资源建立索引或进行主题分类,并通过检索接口为用户提供信息查询服务,即通过查询语法为用户返回匹配资源的系统。

搜索引擎主要是由Crawler、Spider、Robot等程序自动在因特网上漫游,不断搜集各类新网页,然后按照网页相关性原理在每一个关键词和所有相关的网页之间建立一个对应关系,储存在其网络服务器的数据库中,用户只要输入关键词就可以找到符合该关键词特征的所有被索引的网页。

搜索引擎通过采集众多网络站点信息,将万维网(WorldWideWeb)中所有信息资源整理和分类后作为一个完整的集合,以此来提供全局性网络资源检索服务,方便用户查找所需信息的网络检索软件。

搜索引擎(SearchEngine)经历了三代的更新和发展:

第一代搜索引擎出现于1994年。

这类搜索引擎一般都索引少于1,000,000个网页,极少重新搜集网页并去刷新索引。

而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。

第二代搜索引擎出现于1996年。

第二代搜索引擎系统大多采用分布式方案来提高数据规模、响应速度和用户数量,它们一般都保持一个大约50,000,000网页的索引数据库,每天能够响应10,000,000次用户检索请求。

1998年,以Google为代表的第二代搜索引擎出现在互联网上,这些引擎的主要特点是提高了查准率,可以用“求精”来描述。

Google搜索引擎采用新的搜索方式,通过一种复杂的数学分析,通过估算反馈网页质量及相关程度来决定排名次序。

传统的搜索引擎如Hotbot和Lycos等当前使用的是元素搜索技术,即使用网页中的关键词进行搜索,而Google则使用一种包含对整个网络的链接结构进行分析和大规模资料挖掘的技术,Google不仅扫描搜索关键词,还阅读页面全文,考虑到图像和所有链接,然后把该页面与类似页面区分开来。

要想在Google获得好的排名,对网站推广推广提出了更高的要求,仅仅依靠对网页的优化也是不够的,而是依据网站的综合推广水平来决定在搜索结果中的排名次序。

第三代搜索引擎年代的划分和主要特性至今没有统一的认识,不过至少可以肯定的是:

第三代搜索引擎是对第二代搜索引擎在搜索技术上的改进,主要增加了互动性和个性化等高级的技术,为用户使用搜索引擎获取信息获得更好的体验。

至于互动性的评价标准是什么,以及第三代搜索引擎到底比第二代搜索引擎增加了多少价值,尤其是为企业利用搜索引擎开展网络营销增加了哪些价值,目前并没有非常令人信服的研究结论。

这也就是目前所谓的第三代搜索引擎并没有表现出太多优势的原因之一。

搜索引擎在将来的发展趋势大概有以下几个方面:

1)提高对用户输入的理解

为了提高搜索引擎对用户检索提问的理解,就必须有一个好的检索提问语言,为了克服关键词检索和目录查询的缺点,现在已经出现了自然语言智能答询。

用户可以输入简单的疑问句,比如“howcankillvirusofcomputer?

”。

搜索引擎在对提问进行结构和内容的分析之后,或直接给出提问的答案,或引导用户从几个可选择的问题中进行再选择。

自然语言的优势在于,一是使网络交流更加人性化,二是使查询变得更加方便、直接、有效。

就以上面的例子来讲,如果用关键词查询,多半人会用“virus”这个词来检索,结果中必然会包括各类病毒的介绍、病毒是怎样产生的等等许多无效信息,而用“howcankillvirusofcomputer?

”,搜索引擎会将怎样杀病毒的信息提供给用户,提高了检索效率。

2)对检索的结果进行处理

对检索的结果处理,有以下几个方向:

其一,使用链接评价,就是将网页的链接数量算作网页评分因素之一,这样搜索的结果就更加的能够满足用户的要求,在这个方面google()的“链接评价体系”已经做出了相当出色的成绩。

其二,使用大众访问性,就是将访问数量(也可以叫做点击数量)算作网页评分的因素之一,这样想这样的网站的分数会很高,而这样的网站很多时候都是用户想找的,这样能够提高搜索引擎的准确率。

其三,去掉结果中的附加信息。

有调查指出,过多的附加信息加重了用户的信息负担,为了去掉这些过多的附加信息,可以采用用户定制、内容过滤等检索技术。

3)确定搜集返回,提高针对性

在这个方面现在的发展的方向是:

其一,垂直主题搜索。

垂直主题的搜索引擎以其高度的目标化和专业化在各类搜索引擎中占据了一系席之地,比如象股票、天气、新闻等类的搜索引擎,具有很高的针对性,用户对查询结果的满意度较高。

我认为,垂直主题有着极大的发展空间。

其二,非www信息的搜索。

搜索引擎提供了例如ftp等非www信息的搜索。

其三,多媒体搜索。

搜索引擎还提供了例如包括声音、图像等等多媒体信息的检索。

4)提供更优化的检索结果

在这个方面有两个主要的发展方向:

其一,纯净搜索引擎。

这类搜索引擎没有自己的信息采集系统,利用别人现有的索引数据库,主要关注检索的理念、技术和机制等。

其二,元搜索引擎。

元搜索引擎(metasearchengining)是将用户提交的检索请求到多个独立的搜索引擎上去搜索,并将检索结果集中统一处理,以统一的格式提供给用户,因此有搜索引擎之上的搜索引擎之称。

它的主要精力放在提高搜索速度、智能化处理搜索结果、个性搜索功能的设置和用户检索界面的友好性上,查全率和查准率都比较高。

1.3本文主要工作

本文在深入分析通用搜索引擎基本原理、架构设计和核心技术的基础上,设计并实现了一个可扩展,可复用的小型搜索引擎系统。

具体工作有以下几方面:

1)详细论述了系统的设计需求以及关键技术,明确系统的功能,并设计出详细的系统流程图。

2)详细分析网络爬虫技术原理,设计并实现网络爬虫。

3)理解分析索引建立的原理,设计了详细流程图,并实现了倒排索引。

4)根据检索系统的查询处理技术和评估原理,分析并详细设计了此部分,完成了详细流程图,实现了检索系统。

2搜索引擎工作原理分析

2.1搜索引擎基本原理

搜索引擎的基本原理是通过网络爬虫定期自动在Web网页上按某种策略进行远程数据的搜索与获取,从初始网站页面开始,读取网页内容,并找到在网站中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环,直到抓取完所有网页信息。

当抓取完这些网页后,由分析索引系统程序对收集回来的网页进行分析,将其中的辅助部分(如各种HTML标签、脚本程序)去掉,提取相关网页信息(包括网页所在URL、编码类型、页面内容、包含的所有关键词、关键词位置、生成时间、大小等),再根据一定的算法计算每一个关键词针对每一个网页的权重,然后用这些相关信息建立网页索引数据库,形成本地查询数据库。

建立网页索引数据库后,当用户输入关键词搜索时,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页,再根据算法计算用户查询的关键词与这些网页的相关度,按照相关度的数值排序,相关度越高,即相关度数值越大,排名越靠前。

最后,检索系统将搜索结果的链接地址和页面内容摘要等内容组织起来,返回给用户。

现代大规模的搜索引擎一般采用如图2-1式工作流程:

图2-1搜索引擎工作流程

2.1网页搜集

搜索引擎首先利用的是一种俗称蜘蛛(Spider)或爬虫(Crawler)的软件。

搜索引擎蜘蛛访问到一个页面,读取它,然后跟随这个页面链接到这个站点的其他页面,这就是人们所说的站点被套住了或者被爬过了。

蜘蛛会按照固定的时间不断的回来访问这个站点,如每月或每两个月,以便查看页面的变化。

由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。

2.2索引建立

搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。

其中,最重要的就是提取关键词,建立索引文件。

其他还包括去除重复网页、分词、判断网页类型、分析超链接、计算网页的重要度/丰富度等。

由分析索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL、编码类型、关键词、关键词位置、生成时间、大小等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度,然后用这些相关信息建立网页索引数据库。

2.3提供检索服务

用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页,为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息,这个程序详细审查记录在索引中的成百上亿的Web页,找出与搜索要求相匹配的那些,并按他认为最合适的相关性排列出列表,呈现在冲浪者的面前。

搜索引擎常用检索方法主要包括:

1)简单搜索:

指输入一个单词(关键词),提交搜索引擎检索后反馈结果,也叫单词搜索,这是最基本的检索方法。

2)词组搜索:

指输入两个单词以上的词组(短语),提交搜索引擎检索并反馈结果,也叫短语搜索。

现有搜索引擎一般都约定把词组或短语放在引号“”内。

如果查找的是一个词组或多个汉字,最好的办法就是将它们用双引号括起来,这样得到的结果最精确,这就叫使用双引号进行精确查找。

一般说来在网页搜索引擎中,用词组搜索来缩小范围从而找到搜索结果是最好的办法。

但是,运用词组搜索涉及到如何选择一个词组来表达检索问题。

有时简单搜索就能奏效,有时则需要输入一个词组才能奏效,故选择合适的词组对提高搜索效率是很重要的。

3)高级搜索:

指用布尔逻辑组配方式检索,也叫定制搜索。

常用的逻辑运算为AND(和)、OR(或)、NOT(非),对A、B两词而言,AANDB是指取A和B的公共部分(交集),AORB是指取A和B的全部(并集),ANOTB是指取A中排除B后的部分。

有的搜索引擎还支持以下检索方法:

1)语句搜索:

指输入任意自然语言问句,提交搜索引擎检索并反馈结果,这种方式也叫任意检索,实际上就是自然语言检索。

并非所有的搜索引擎都支持这样的检索,而且不同搜索引擎对语句中词与词之间的关系的处理方式也不同。

2)目录搜索:

指按搜索引擎提供的分类目录逐级检索,用户一般不需要输入检索词,而是按照检索系统所给的几种分类项目,选择类别进行搜索,也叫分类搜索(ClassifiedSearch)。

2.4搜索引擎的分类

搜索引擎按照信息搜集方法和服务提供方式的不同大致可分为以下四类:

2.4.1全文索引

全文索引引擎是名副其实的搜索引擎,国外代表有Google,国内知名的XX搜索。

它们从互联网提取各个网站的信息,建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。

根据搜索结果来源的不同,全文搜索引擎可分为两类:

一类拥有自己的网页抓取、索引、检索系统,有独立的“蜘蛛”(Spider)程序、或爬虫(Crawler)、或“机器人”(Robot)程序,能自建网页数据库,搜索结果直接从自身的数据库中调用;另一类则是租用其他搜索引擎的数据库,并按自定的格式排列搜索结果。

2.4.2目录索引

目录索引是按目录分类的网站链接列表。

虽然有搜索功能,但严格意义上不能称为真正的搜索引擎。

用户完全可以按照分类目录找到所需要的信息,不依靠关键词进行查询。

目录索引中最具代表性的莫过于Yahoo、新浪分类目录搜索。

2.4.3元搜索引擎

元搜索引擎接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户。

著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。

在搜索结果排列方面,有的直接按来源排列搜索结果;有的则按自定的规则将结果重新排列组合。

2.4.4垂直搜索引擎

垂直搜索引擎为2006年后逐步兴起的一类搜索引擎。

不同于通用的网页搜索引擎,垂直搜索专注于特定的搜索领域和搜索需求(例如:

机票搜索、旅游搜索、视频搜索等),在其特定的搜索领域有更好的用户体验。

相比通用搜索动辄数千台检索服务器,垂直搜索需要的硬件成本低、用户需求特定、查询的方式多样。

3系统关键技术问题及解决方案

3.1网页访问问题及解决方案

爬虫程序需要根据指定的url,访问一个页面,获取该页面的HTML文档(包含一个网页的所有信息),然后对HTML文档进行保存和解析,以便进行之后倒排索引的工作,所以网页的访问是搜索引擎系统重要的第一步工作。

问题解决方法:

通过System.NET命名空间中提供的HttpWebRequest和HttpWebResponse类来实现对指定URL页面的下载,HttpWebRequest对象发送HTTP请求后,由HttpWebResponse接收响应,HttpWebResponse对象中包含了响应体的所有信息(包括服务器响应体的流,响应体进行编码的方法,与响应关联的标头等),如此我们便可从HttpWebResponse对象中获取网页信息。

图3-1HTTP请求及响应过程示意图

.NETFramework使用HttpWebRequest和HttpWebResponse类来提供对HTTP协议的全面支持,而HTTP协议构成了所有Internet通信量中的绝大部分。

每当静态方法WebRequest.Create遇到以“http”或“https”开头的URI时,在默认情况下将返回这些从WebRequest和WebResponse派生的类。

在大多数情况下,WebRequest和WebResponse类提供生成请求所需的一切,但如果需要访问作为属性公开的HTTP特定功能,则可以将这些类的类型转换为HttpWebRequest或HttpWebResponse。

HttpWebRequest和HttpWebResponse封装“标准HTTP请求和响应”事务,并提供对通用HTTP头的访问。

这些类还支持大部分的HTTP1.1功能,其中包括管线、块区、身份验证、预身份验证、加密、代理支持、服务器证书验证以及连接管理。

自定义头和不是通过属性提供的头可存储在Headers属性中并可通过此属性访问。

HttpWebRequest是WebRequest使用的默认类,不需要注册它就可以将URI传递给WebRequest.Create方法。

3.2网页解析问题及解决方案

在索引建立之前,首先要将下载的HTML文档进行解析,所谓的HTML文档,实质便是网页的代码,代码中肯定包含了网页中所有的文字信息,但是代码同时也包含了许多的HTML标签,这些标签中的很多内容同样也是无用的,比如:

这样标签,它中间的内容是无用的,它只是对网页的显示效果有用;这样的标签,必须对它进行解析,才知道它运行后会得到什么结果,暂且不管能不能实现对它的解析,即使能够写出这样的程序,也不得不花大量的时间,从可行性方面上分析对此标签的解析不可取。

所以如何去除HTML文档中无用的标签部分,提取HTML文档中有用的文字信息部分是一个关键问题。

问题解决方法:

通过正则表达式的使用,来匹配HTML文档中有用的标签部分,并提取标签中间中的文字信息进行另存,通过直接分析这些有用的文字信息部分来实现倒排索引,这样大大提高了索引建立的效率。

在.NET中提供了对正则表达式的支持,并且提供了相关的类,分别有:

Regex、Match、Group、Capture、RegexOptions、MatchCollection、GroupCollection、CaptureCollection。

提取网页中的URL,主要使用以下几个类:

Regex:

正则表达式类,代表了一个不可变的正则表达式。

Match:

代表了Regex类的实例的一次匹配结果,可以通过Regex的Match()实例方法返回一个Match的实例。

MatchCollection:

代表了Regex类的实例的所有匹配结果,可以通过Regex的Matches()实例方法返回一个MatchCollection的实例。

正则表达式的一种最常用的场所是用于使用一些预先定义的格式校验用户输入。

这些规则被典型地定义为正则表达式。

正则表达式也常用于校验简单的输入,例如电子邮件地址和电话号码。

System.Text.RegularExpressions命名空间包含一些类,这些类提供对.NETFramework正则表达式引擎的访问。

该命名空间提供正则表达式功能,可以从运行在Microsoft.NETFramework内的任何平台或语言中使用该功能。

3.3倒排索引存储问题及解决方案

倒排索引源于实际应用中需要根据属性的值来查找记录。

这种索引表中的每一项都包括一个属性值和具有该属性值的各记

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

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1