全文搜索引擎技术研究与实现毕业设计(论文).doc

上传人:文库蛋蛋多 文档编号:3935468 上传时间:2023-03-28 格式:DOC 页数:46 大小:1.10MB
返回 下载 相关 举报
全文搜索引擎技术研究与实现毕业设计(论文).doc_第1页
第1页 / 共46页
全文搜索引擎技术研究与实现毕业设计(论文).doc_第2页
第2页 / 共46页
全文搜索引擎技术研究与实现毕业设计(论文).doc_第3页
第3页 / 共46页
全文搜索引擎技术研究与实现毕业设计(论文).doc_第4页
第4页 / 共46页
全文搜索引擎技术研究与实现毕业设计(论文).doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《全文搜索引擎技术研究与实现毕业设计(论文).doc》由会员分享,可在线阅读,更多相关《全文搜索引擎技术研究与实现毕业设计(论文).doc(46页珍藏版)》请在三一办公上搜索。

1、 编号 毕 业 设 计(论文)题目 全文搜索引擎技术研究与实现 二级学院 计算机科学与工程学院 专 业 计算机科学与技术 班 级 107030703 学生姓名 学号10703070313 指导教师 职称 讲师 时 间 2011.6 目 录摘要IAbstractII1绪论11.1 搜索引擎的出现背景及意义11.2 现阶段搜索引擎的研究现状11.3 本文主要工作42 搜索引擎工作原理分析52.1 搜索引擎基本原理52.1 网页搜集62.2 索引建立62.3 提供检索服务72.4 搜索引擎的分类73 系统关键技术问题及解决方案93.1 网页访问问题及解决方案93.2 网页解析问题及解决方案103.3

2、 倒排索引存储问题及解决方案113.4 检索系统评分问题及解决方案114 系统需求分析144.1 系统的功能需求144.2 系统的非功能性需求154.3 可行性分析155 系统设计185.1 系统总体结构185.2 网络爬虫模块设计185.3 索引系统模块设计195.4 检索系统模块设计205.5数据库表设计206 系统实现236.1 系统界面实现236.2 爬虫程序模块实现256.3 索引系统模块实现266.4 信息检索系统模块实现287 系统测试307.1 系统测试的目的307.2 系统测试的原则317.3 测试环境317.4 测试记录318 结论40致谢41参考文献42摘要随着互联网的不

3、断发展和日益普及,网络成为信息极其重要的来源地,越来越多的人从网络上获取自己所需要的信息,网上的信息量在爆炸式增长,如何在最短时间内找到我们所需要的资料就成了一个非常关键的问题。为了解决这个问题,Web搜索引擎就随之出现了,并得到了飞速发展,使得像Google,百度这样的通用搜索引擎变成了人们寻找信息必不可少的工具,搜索引擎现在也已经成为互联网上仅次于电子邮件的第二大网络服务。本文论述了搜索引擎的开发背景以及搜索引擎的历史和发展趋势,分析了搜索引擎的开发需求,在深入研究了通用搜索引擎基本原理、架构设计和核心技术的基础上,结合搜索引擎的需求,构建了一个运行稳定,性能良好而且可扩充的搜索引擎系统,

4、本文不仅仅完成了对整个系统的设计,对系统开发中的一些关键技术问题,都给出了解决方案(包括网络爬虫、倒排索引、信息检索及结果排序等,这些技术将被应用到文中提出的系统设计方案中),并且完成了所有的编码实现工作。关键词:搜索引擎,网络爬虫,倒排索引,信息检索AbstractAlong with the continuous development of the Internet and growing popularity, network becomes an extremely important source of information, more and more people from

5、the network to obtain the information they need, and the amount of information online in the explosive growth, How to find the shortest possible time the information we need to become a very critical issue. To solve this problem, Web search engines appeared on the subsequent, and has been the rapid

6、development of, make like Google, Baidu, into a general search engine indispensable tool for people to find information, search engines are now second only to e-mail on the Internet has become the second largest Internet service.This article discusses the background and development of search engine

7、search engine history and trends, analysis of the search engines development needs, indepth study of the basic principles of general search engines, architecture design and core technology on the basis of, with the needs of search engine, construct a stable ,good performance and scalable search engi

8、ne system. This paper not only completed the design of the whole system, for system development, some key technical issues have given solutions (including web crawl, inverted index, information retrieval, and result ranking, these technologies will be applied to the system proposed in this paper the

9、 design project),and completed all the coding and implementation work.Keywords: search engine, web crawl, inverted index, information retrieve1 绪论1.1 搜索引擎的出现背景及意义随着计算机技术和网络技术的飞速发展,特别是Web技术的刺激和Internet的商业化,网络所能提供给人们的信息量越来越大,网上的信息几乎是呈指数级增长。当前,万维网上约有875万个网站,25亿网页,190亿字节以上的网页数据。同时,网页数量正以每天750万的速度净增长。然而由

10、于信息资源组织的杂乱性和信息资源的动态性,使得用户要在信息海洋里查找信息,就像大海捞针一样,在没有搜索引擎的时代,用户希望寻找某方面的信息,就必须通过各种途径或者是网站之间的连接寻找,可以这样说,脱离的搜索引擎的网站,就像是信息海洋中的一个一个的孤岛,用户必将面临巨大的搜索成本,同时必须付出大量的时间和精力。搜索引擎恰好解决了这一难题。搜索引擎(Search Engine)通常指的是基于因特网的搜索引擎,它通过网络机器人程序以一定的策略在互联网中搜集、发现信息,收集上千万到几亿个网页,对信息进行理解、提取、组织和处理,每一个词都会被搜索引擎索引,也就是我们说的全文检索,并为用户提供检索服务,从

11、而起到信息导航的目的。它将这些信息孤岛联系起来,形成了一张巨大的信息网,并且运用分布式计算的巨大力量,能够让用户从海量数据中摒除垃圾信息,获取想要的知识。搜索引擎不仅仅是节省了用户的时间,通过挖掉搜寻成本这座墙,它让许许多多的不可能成为可能。搜索引擎提供的导航服务已经成为互联网上非常重要的网络服务,目前国内的Web信息资源数量已经相当可观,搜索引擎的发展也是非常迅猛,国内外的调查结果都表明,当前互联网上仅次于收发电子邮件的第二大应用就是在网上搜索信息,因此,搜索引擎已经成为软件业研究的热点之一,本文所研究的搜索引擎便是基于因特网的搜索引擎。1.2 现阶段搜索引擎的研究现状搜索引擎(Search

12、 Engine),是一个对互联网信息资源进行搜索整理和分类,并储存在网络数据库中供用户查询的系统。搜索引擎根据检索规则和从其他信息服务器上得到数据并对数据进行加工处理,能够自动对万维网(World Wide Web)资源建立索引或进行主题分类,并通过检索接口为用户提供信息查询服务,即通过查询语法为用户返回匹配资源的系统。搜索引擎主要是由Crawler、Spider、Robot等程序自动在因特网上漫游,不断搜集各类新网页,然后按照网页相关性原理在每一个关键词和所有相关的网页之间建立一个对应关系,储存在其网络服务器的数据库中,用户只要输入关键词就可以找到符合该关键词特征的所有被索引的网页。搜索引擎

13、通过采集众多网络站点信息,将万维网(World Wide Web)中所有信息资源整理和分类后作为一个完整的集合,以此来提供全局性网络资源检索服务,方便用户查找所需信息的网络检索软件。搜索引擎(Search Engine)经历了三代的更新和发展:第一代搜索引擎出现于1994年。这类搜索引擎一般都索引少于1,000,000个网页,极少重新搜集网页并去刷新索引。而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。第二代搜索引擎出现于1996年。第二代搜索引擎系统大多采用分布式方案来提高数据规模、响应速度和用户数量,它们一般都保持一个大约50,000,000网页的索引数据库,每天能够响应10,00

14、0,000次用户检索请求。1998年,以Google为代表的第二代搜索引擎出现在互联网上,这些引擎的主要特点是提高了查准率,可以用“求精”来描述。Google搜索引擎采用新的搜索方式,通过一种复杂的数学分析,通过估算反馈网页质量及相关程度来决定排名次序。传统的搜索引擎如Hotbot和Lycos等当前使用的是元素搜索技术,即使用网页中的关键词进行搜索,而Google则使用一种包含对整个网络的链接结构进行分析和大规模资料挖掘的技术,Google不仅扫描搜索关键词,还阅读页面全文,考虑到图像和所有链接,然后把该页面与类似页面区分开来。要想在Google获得好的排名,对网站推广推广提出了更高的要求,仅

15、仅依靠对网页的优化也是不够的,而是依据网站的综合推广水平来决定在搜索结果中的排名次序。第三代搜索引擎年代的划分和主要特性至今没有统一的认识,不过至少可以肯定的是:第三代搜索引擎是对第二代搜索引擎在搜索技术上的改进,主要增加了互动性和个性化等高级的技术,为用户使用搜索引擎获取信息获得更好的体验。至于互动性的评价标准是什么,以及第三代搜索引擎到底比第二代搜索引擎增加了多少价值,尤其是为企业利用搜索引擎开展网络营销增加了哪些价值,目前并没有非常令人信服的研究结论。这也就是目前所谓的第三代搜索引擎并没有表现出太多优势的原因之一。搜索引擎在将来的发展趋势大概有以下几个方面:1)提高对用户输入的理解为了提

16、高搜索引擎对用户检索提问的理解,就必须有一个好的检索提问语言,为了克服关键词检索和目录查询的缺点,现在已经出现了自然语言智能答询。用户可以输入简单的疑问句,比如“how can kill virus of computer?”。搜索引擎在对提问进行结构和内容的分析之后,或直接给出提问的答案,或引导用户从几个可选择的问题中进行再选择。自然语言的优势在于,一是使网络交流更加人性化,二是使查询变得更加方便、直接、有效。就以上面的例子来讲,如果用关键词查询,多半人会用“virus”这个词来检索,结果中必然会包括各类病毒的介绍、病毒是怎样产生的等等许多无效信息,而用“how can kill virus

17、 of computer?”,搜索引擎会将怎样杀病毒的信息提供给用户,提高了检索效率。2)对检索的结果进行处理对检索的结果处理,有以下几个方向:其一,使用链接评价,就是将网页的链接数量算作网页评分因素之一,这样搜索的结果就更加的能够满足用户的要求,在这个方面google()的“链接评价体系”已经做出了相当出色的成绩。其二,使用大众访问性,就是将访问数量(也可以叫做点击数量)算作网页评分的因素之一,这样想这样的网站的分数会很高,而这样的网站很多时候都是用户想找的,这样能够提高搜索引擎的准确率。其三,去掉结果中的附加信息。有调查指出,过多的附加信息加重了用户的信息负担,为了去掉这些过多的附加信息,

18、可以采用用户定制、内容过滤等检索技术。3)确定搜集返回,提高针对性在这个方面现在的发展的方向是:其一,垂直主题搜索。垂直主题的搜索引擎以其高度的目标化和专业化在各类搜索引擎中占据了一系席之地,比如象股票、天气、新闻等类的搜索引擎,具有很高的针对性,用户对查询结果的满意度较高。我认为,垂直主题有着极大的发展空间。其二,非www信息的搜索。搜索引擎提供了例如ftp等非www信息的搜索。其三,多媒体搜索。搜索引擎还提供了例如包括声音、图像等等多媒体信息的检索。4)提供更优化的检索结果在这个方面有两个主要的发展方向:其一,纯净搜索引擎。这类搜索引擎没有自己的信息采集系统,利用别人现有的索引数据库,主要

19、关注检索的理念、技术和机制等。其二,元搜索引擎。元搜索引擎(metasearch engining)是将用户提交的检索请求到多个独立的搜索引擎上去搜索,并将检索结果集中统一处理,以统一的格式提供给用户,因此有搜索引擎之上的搜索引擎之称。它的主要精力放在提高搜索速度、智能化处理搜索结果、个性搜索功能的设置和用户检索界面的友好性上,查全率和查准率都比较高。1.3 本文主要工作本文在深入分析通用搜索引擎基本原理、架构设计和核心技术的基础上,设计并实现了一个可扩展,可复用的小型搜索引擎系统。具体工作有以下几方面:1)详细论述了系统的设计需求以及关键技术,明确系统的功能,并设计出详细的系统流程图。2)详

20、细分析网络爬虫技术原理,设计并实现网络爬虫。3)理解分析索引建立的原理,设计了详细流程图,并实现了倒排索引。4)根据检索系统的查询处理技术和评估原理,分析并详细设计了此部分,完成了详细流程图,实现了检索系统。2 搜索引擎工作原理分析2.1 搜索引擎基本原理搜索引擎的基本原理是通过网络爬虫定期自动在Web网页上按某种策略进行远程数据的搜索与获取,从初始网站页面开始,读取网页内容,并找到在网站中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环,直到抓取完所有网页信息。当抓取完这些网页后,由分析索引系统程序对收集回来的网页进行分析,将其中的辅助部分(如各种HTML标签、脚本程序)去掉

21、,提取相关网页信息(包括网页所在URL、编码类型、页面内容、包含的所有关键词、关键词位置、生成时间、大小等),再根据一定的算法计算每一个关键词针对每一个网页的权重,然后用这些相关信息建立网页索引数据库,形成本地查询数据库。建立网页索引数据库后,当用户输入关键词搜索时,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页,再根据算法计算用户查询的关键词与这些网页的相关度,按照相关度的数值排序,相关度越高,即相关度数值越大,排名越靠前。最后,检索系统将搜索结果的链接地址和页面内容摘要等内容组织起来,返回给用户。现代大规模的搜索引擎一般采用如图2-1式工作流程:搜索引擎界面接口信息检索系统

22、查询请求结果集用户查询请求结果集索引文件库索引系统网络爬虫WWW文档请求响应HTML文档集搜索结果集图2-1 搜索引擎工作流程2.1 网页搜集搜索引擎首先利用的是一种俗称蜘蛛(Spider)或爬虫(Crawler)的软件。搜索引擎蜘蛛访问到一个页面,读取它,然后跟随这个页面链接到这个站点的其他页面,这就是人们所说的站点被套住了或者被爬过了。蜘蛛会按照固定的时间不断的回来访问这个站点,如每月或每两个月,以便查看页面的变化。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。2.2 索引建立搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重

23、要的就是提取关键词,建立索引文件。其他还包括去除重复网页、分词、判断网页类型、分析超链接、计算网页的重要度/丰富度等。由分析索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL、编码类型、关键词、关键词位置、生成时间、大小等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度,然后用这些相关信息建立网页索引数据库。2.3 提供检索服务用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页,为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息,这个程序详细审查记录在索引中的成百上亿的We

24、b页,找出与搜索要求相匹配的那些,并按他认为最合适的相关性排列出列表,呈现在冲浪者的面前。搜索引擎常用检索方法主要包括:1) 简单搜索:指输入一个单词(关键词),提交搜索引擎检索后反馈结果,也叫单词搜索,这是最基本的检索方法。2) 词组搜索:指输入两个单词以上的词组(短语),提交搜索引擎检索并反馈结果,也叫短语搜索。现有搜索引擎一般都约定把词组或短语放在引号“”内。如果查找的是一个词组或多个汉字,最好的办法就是将它们用双引号括起来,这样得到的结果最精确,这就叫使用双引号进行精确查找。一般说来在网页搜索引擎中,用词组搜索来缩小范围从而找到搜索结果是最好的办法。但是,运用词组搜索涉及到如何选择一个

25、词组来表达检索问题。有时简单搜索就能奏效,有时则需要输入一个词组才能奏效,故选择合适的词组对提高搜索效率是很重要的。3) 高级搜索:指用布尔逻辑组配方式检索,也叫定制搜索。常用的逻辑运算为AND(和)、OR(或)、NOT(非), 对A、B两词而言, A AND B是指取A和B的公共部分(交集),A OR B是指取A和B的全部(并集),A NOT B是指取A中排除B后的部分。有的搜索引擎还支持以下检索方法:1) 语句搜索:指输入任意自然语言问句,提交搜索引擎检索并反馈结果,这种方式也叫任意检索,实际上就是自然语言检索。并非所有的搜索引擎都支持这样的检索,而且不同搜索引擎对语句中词与词之间的关系的

26、处理方式也不同。2) 目录搜索:指按搜索引擎提供的分类目录逐级检索,用户一般不需要输入检索词,而是按照检索系统所给的几种分类项目,选择类别进行搜索,也叫分类搜索(Classified Search)。2.4 搜索引擎的分类搜索引擎按照信息搜集方法和服务提供方式的不同大致可分为以下四类:2.4.1全文索引全文索引引擎是名副其实的搜索引擎,国外代表有Google,国内知名的百度搜索。它们从互联网提取各个网站的信息,建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。根据搜索结果来源的不同,全文搜索引擎可分为两类:一类拥有自己的网页抓取、索引、检索系统,有独立的“蜘蛛”(Sp

27、ider)程序、或爬虫(Crawler)、或“机器人”(Robot)程序,能自建网页数据库,搜索结果直接从自身的数据库中调用;另一类则是租用其他搜索引擎的数据库,并按自定的格式排列搜索结果。2.4.2目录索引目录索引是按目录分类的网站链接列表。虽然有搜索功能,但严格意义上不能称为真正的搜索引擎。用户完全可以按照分类目录找到所需要的信息,不依靠关键词进行查询。目录索引中最具代表性的莫过于Yahoo、新浪分类目录搜索。2.4.3元搜索引擎元搜索引擎接受用户查询请求后,同时在多个搜索引擎上搜索,并将结果返回给用户。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引

28、擎中具代表性的是搜星搜索引擎。在搜索结果排列方面,有的直接按来源排列搜索结果;有的则按自定的规则将结果重新排列组合。2.4.4垂直搜索引擎垂直搜索引擎为2006年后逐步兴起的一类搜索引擎。不同于通用的网页搜索引擎,垂直搜索专注于特定的搜索领域和搜索需求(例如:机票搜索、旅游搜索、视频搜索等),在其特定的搜索领域有更好的用户体验。相比通用搜索动辄数千台检索服务器,垂直搜索需要的硬件成本低、用户需求特定、查询的方式多样。3 系统关键技术问题及解决方案3.1 网页访问问题及解决方案爬虫程序需要根据指定的url,访问一个页面,获取该页面的HTML文档(包含一个网页的所有信息),然后对HTML文档进行保

29、存和解析,以便进行之后倒排索引的工作,所以网页的访问是搜索引擎系统重要的第一步工作。问题解决方法: 通过System.NET命名空间中提供的HttpWebRequest 和 HttpWebResponse 类来实现对指定URL页面的下载,HttpWebRequest对象发送HTTP请求后,由HttpWebResponse接收响应,HttpWebResponse对象中包含了响应体的所有信息(包括服务器响应体的流,响应体进行编码的方法,与响应关联的标头等),如此我们便可从HttpWebResponse对象中获取网页信息。WEB应用服务器网络爬虫HTTP请求HTTP响应图3-1 HTTP请求及响应过

30、程示意图.NET Framework 使用 HttpWebRequest 和 HttpWebResponse 类来提供对 HTTP 协议的全面支持,而 HTTP 协议构成了所有 Internet 通信量中的绝大部分。每当静态方法 WebRequest.Create 遇到以“http”或“https”开头的 URI 时,在默认情况下将返回这些从 WebRequest 和 WebResponse 派生的类。在大多数情况下,WebRequest 和 WebResponse 类提供生成请求所需的一切,但如果需要访问作为属性公开的 HTTP 特定功能,则可以将这些类的类型转换为 HttpWebReque

31、st 或 HttpWebResponse。HttpWebRequest 和 HttpWebResponse 封装“标准 HTTP 请求和响应”事务,并提供对通用 HTTP 头的访问。这些类还支持大部分的 HTTP 1.1 功能,其中包括管线、块区、身份验证、预身份验证、加密、代理支持、服务器证书验证以及连接管理。自定义头和不是通过属性提供的头可存储在 Headers 属性中并可通过此属性访问。HttpWebRequest 是 WebRequest 使用的默认类,不需要注册它就可以将 URI 传递给 WebRequest.Create 方法。3.2 网页解析问题及解决方案在索引建立之前,首先要将

32、下载的HTML文档进行解析,所谓的HTML文档,实质便是网页的代码,代码中肯定包含了网页中所有的文字信息,但是代码同时也包含了许多的HTML标签,这些标签中的很多内容同样也是无用的,比如:这样标签,它中间的内容是无用的,它只是对网页的显示效果有用;这样的标签,必须对它进行解析,才知道它运行后会得到什么结果,暂且不管能不能实现对它的解析,即使能够写出这样的程序,也不得不花大量的时间,从可行性方面上分析对此标签的解析不可取。所以如何去除HTML文档中无用的标签部分,提取HTML文档中有用的文字信息部分是一个关键问题。问题解决方法:通过正则表达式的使用,来匹配HTML文档中有用的标签部分,并提取标签

33、中间中的文字信息进行另存,通过直接分析这些有用的文字信息部分来实现倒排索引,这样大大提高了索引建立的效率。在.NET中提供了对正则表达式的支持,并且提供了相关的类,分别有:Regex、Match、Group、Capture、RegexOptions、MatchCollection、GroupCollection、CaptureCollection。提取网页中的URL,主要使用以下几个类:Regex:正则表达式类,代表了一个不可变的正则表达式。Match:代表了Regex类的实例的一次匹配结果,可以通过Regex的Match()实例方法返回一个Match的实例。MatchCollection:代

34、表了Regex类的实例的所有匹配结果,可以通过Regex的Matches()实例方法返回一个MatchCollection的实例。正则表达式的一种最常用的场所是用于使用一些预先定义的格式校验用户输入。这些规则被典型地定义为正则表达式。正则表达式也常用于校验简单的输入,例如电子邮件地址和电话号码。System.Text.RegularExpressions 命名空间包含一些类,这些类提供对 .NET Framework 正则表达式引擎的访问。该命名空间提供正则表达式功能,可以从运行在 Microsoft .NET Framework 内的任何平台或语言中使用该功能。3.3 倒排索引存储问题及解决

35、方案倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。倒排文件(倒排索引),索引对象是文档或者文档集合中的单词等,用来存储这些单词在一个文档或者一组文档中的存储位置,是对文档或者文档集合的一种最常用的索引机制。本系统建立的倒排索引是从索引词项到URL的关系索引表,即由关键词查找相应的URL信息。索引表也要记录索引项在文档中出现的位置,以便检

36、索系统计算索引项之间的相邻关系或接近关系,并以特定的数据结构存储在硬盘上,为检索系统服务,因此倒排索引的存储结构对之后的检索系统的检索效率有着重要的作用和影响。解决方法:建立两种类型文件,索引文件和词频文件。索引文件(即倒排索引文件)存储每个索引项的文档频率和该词在各文档中的出现位置。词频文件,存储每个词项在各文档中的出现频率,以便最后检索系统的评分。同时,文件中各项都用两个特殊符号括起来,以便正则表达式的匹配获取。3.4 检索系统评分问题及解决方案检索系统要根据用户给出的查询语句,查找倒排索引,根据得到的文档和查询语句的相关性,对结果进行排序,讲文档按照相关性由大到小排序返回给用户,相关性越

37、大说明越接近用户的查询需求,因此对于文档和查询语句的相关性计算是一个关键性的问题。解决方法:判断词(Term)之间的关系从而得到文档相关性的过程应用一种叫做向量空间模型的算法(Vector Space Model)。首先,影响一个词(Term)在一篇文档中的重要性主要有两个因素:Term Frequency (TF):即此Term 在此文档中出现了多少次。TF越大说明越重要。计算公式:TF = 该词在该文档中出现次数/该文档中出现最多的词的出现次数。Document Frequency (IDF):即有多少文档包含此Term。IDF越大说明越重要。计算公式:IDF = lg(总文档数/出现的文

38、档数)。规定每个词(Term)的权重为weight,计算公式一般为TF * IDF。我们把所有此文档中词(term)的权重(term weight) 看作一个向量。Document = term1, term2, ,term NDocument Vector = weight1, weight2, ,weight N同样我们把查询语句看作一个简单的文档,也用向量来表示。Query = term1, term 2, , term NQuery Vector = weight1, weight2, , weight N我们把所有索引的文档向量及查询向量放到一个N 维空间中,每个词(term)是一维

39、,得到如下的关系图:Query Vector=Weight1,Weight2,WeightNDocument Vector=Weight1,Weight2,WeightNTerm 1Term 2Term iTerm jTerm N图3-2 文档向量与查询语句向量关系图因此,我们认为两个向量之间的夹角越小,相关性越大,所以我们计算夹角的余弦值作为相关性的打分,夹角越小,余弦值越大,评分越高,相关性越大。余弦公式如下:其中,表示查询文档向量,表示索引文档向量,表示两查询文档向量和索引文档向量的夹角。4 系统需求分析4.1 系统的功能需求搜索引擎系统分为信息搜集,索引建立,搜索三个部分,系统的功能结

40、构如图4.1:文档下载保存HTML文档爬虫爬虫用户检索信息搜索文档文档解析倒排索引信息搜集信息检索索引建立图4-1 系统功能结构图各部分的功能如下:信息搜集部分:爬虫从一个指定网页出发,获取网页的源代码,对网页进行解析,去除HTML标签,获得网页的超链接,将过滤后的超链接放入工作队列等待以后访问。索引建立部分:网络爬虫将遍历得到的页面的URL地址和保存的HTML文档内容提供给索引系统,索引系统将HTML源码文档解析,取出其中的文字信息部分,对文字进行分词后,计算各词项在文档中的频率信息和位置信息,然后对各词项建立索引,将索引排序后存储到硬盘,为检索系统服务。信息检索部分:用户输入搜索条件后,检

41、索系统将通过倒排索引进行检索,计算相关度后把符合查询要求的数据取出,按照一定的策略进行评分排列后返回给用户。4.2 系统的非功能性需求4.2.1 界面需求界面设计采用Windows窗体界面,简洁易用、美观大方。应提供简单的错误处理机制,系统出现问题或错误时应给予用户一定的提示。提供信息反馈,将当前系统的运行状态和工作状况以文字形式提供给用户。应提供完整的交互功能,对于有先后次序的工作,通过提示消息的方式提示用户操作。4.2.2 质量需求系统应该简洁易用、操作简单,让用户能够轻松地理解使用。要求程序具有可靠性,可以应付种种由于系统问题产生的错误,比如爬虫配置文件读取失败,突然退出程序等。要求提前

42、设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向使用者提交简单易懂清晰明白的提示信息。程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。开发文档要有好的易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。要求程序对所运行的系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件,要求易于维护及扩展。4.3 可行性分析4.3.1 必要性分析在商业化的,利益驱动的当今社会,为了能

43、在竞争中取的优势,各个商家不能将自己的“秘密武器”、自己的内部资料公布出来供大家学习交流。这种现象在高科技领域尤其普遍,在搜索引擎领域,如Yahoo、百度、Google等主流的搜索引擎他们不可能把源代码公开出来让大家研究。而又有很多初学者对搜索引擎要很感兴趣,想深入的研究搜索引擎的奥秘。在此情况下、提出对网络爬虫的研究与实现是非常适合时机的、非常有必要的。4.3.2 技术可行性分析该软件的性质为想学习了解搜索引擎的学习者提供参考和研究。因此算法的选择、对搜索引擎的原理的理解、实现所用的语言的选择是该软件的核心。本文在开发语言上选择的是C#语言,因为C#在带来对应用程序的快速开发能力的同时,并没

44、有牺牲C与C+程序员所关心的各种特性。它忠实地继承了C和C+的优点。C#语言还有以下的优点:1)简洁的语法语法中的冗余是C+中的常见的问题,比如const和#define、各种各样的字符类型等等。C#对此进行了简化,只保留了常见的形式,而别的冗余形式从它的语法结构中被清除了出去。2)精心设计面向对象在C#的类型系统中,每种类型都可以看作一个对象。C#提供了一个叫做装箱(boxing)与拆箱(unboxing)的机制来完成这种操作,而不给使用者带来麻烦。C#只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱。C#中没有了全局函数,没有了全局变量,也没有了全局常数。一切的一切,都必须封

45、装在一个类之中,如此代码将具有更好的可读性,并且减少了发生命名冲突的可能。3)完整的安全性与错误处理语言的安全性与错误处理能力,是衡量一种语言是否优秀的重要依据。C#消除了软件开发中的许多常见错误,并提供了包括类型安全在内的完整的安全性能。.NET运行库提供了代码访问安全特性,它允许管理员和用户根据代码的ID来配置安全等级。变量是类型安全的。4)灵活性与兼容性在简化语法的同时,C#并没有失去灵活性。C#允许与C风格的需要传递指针型参数的API进行交互操作,DLL的任何入口点都可以在程序中进行访问。C#遵守.NET公用语言规范(Common Language Specification,CLS)

46、,从而保证了C#组件与其它语言组件间的互操作性。元数据(Metadata)概念的引入既保证了兼容性,又实现了类型安全。4.3.3 经济可行性分析硬件方面主要是计算机,该系统对计算机配置要求不高,购置费用低,我们的实际情况可以满足开发任务。应用软件均可免费获得,并且系统安装及操作都很简单,易扩充,维护成本也较低。所需资料书籍可以到图书馆翻阅或者个人购买,因此整个系统的所需投资符合我们的支付状况,经济可行性良好。4.3.4 可行性分析结论经过以上分析,本系统从需求、技术、经济等方面来看都是可行的,可以实施开发。5 系统设计5.1 系统总体结构一个 Web搜索引擎的总体架构一般分为三部分功能组成,即网络爬虫,索引建立和信息检索三部分,系统总体框架如图:搜索引擎系统界面网络爬虫索引系统信息检索系统图5-1 搜索引擎总体架构5.2 网络爬虫模块设计爬虫模块包括四部分模块:初始页面设置、爬虫线程控制、爬虫信息配置和日志信息。各部分功能如下:初始网页配置,即给定系统一个最初的URL,爬虫从这个最初的URL开始爬取网页;爬虫线程控制,用于控制线程开始功能,线程挂起功能,挂起线程开始功能和线程终止功能,主要管理爬虫线程的爬取进程和状态;信息配置,用于配置爬

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号