基于ASP.Ne搜索引擎的设计与实现.doc

上传人:精*** 文档编号:829429 上传时间:2023-09-06 格式:DOC 页数:30 大小:265.61KB
下载 相关 举报
基于ASP.Ne搜索引擎的设计与实现.doc_第1页
第1页 / 共30页
基于ASP.Ne搜索引擎的设计与实现.doc_第2页
第2页 / 共30页
基于ASP.Ne搜索引擎的设计与实现.doc_第3页
第3页 / 共30页
基于ASP.Ne搜索引擎的设计与实现.doc_第4页
第4页 / 共30页
基于ASP.Ne搜索引擎的设计与实现.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、 目 录摘要3ABSTRACT4第一章 绪论51.1搜索引擎的背景及意义51.2 搜索引擎的现状6第二章 搜索引擎概述82.1 搜索引擎的概念82.2 搜索引擎的发展82.3 搜索引擎的工作原理92.4 .NET简介10第三章 搜索引擎的设计113.1网页搜集113.1.1网络爬虫的介绍113.1.2网络爬虫设计123.1.3网络蜘蛛的实现143.1.4数据库设计163.2 网页的信息处理163.2.1 倒排索引163.2.2 Lucene.Net介绍173.2.3索引结构193.2.4中文分词技术213.3 查询信息243.3.1查询实现253.3.2 word文档查询263.3.3关键字高

2、亮显示27第四章 用户接口设计284.1用户注册、登陆284.2查询扩展284.3个性化查询294.4 系统数据库设计30第五章 测试与评价315.1查询测试315.2评价32第六章 结论和展望33参考文献35致 谢36附 录37摘要互联网的快速发展使得网络中的信息量越来越大,普通用户对信息的检索越来越困难。搜索引擎的出现大大的该少了这种情况,互联网的快速发展也使搜索引擎的不断的发展着,而搜索引擎的逐渐转向商业化运行,使得搜索引擎的技术细节越来越隐蔽。本文以搜索引擎的三个基本功能:网页爬取、网页处理、查询服务为出发点,并按这三个功能将系统进行功能模块划分,以ASP.NET技术作为基础,实现了一

3、个搜索引擎。网页中存在着大量链接的同时也具有众多的冗余信息,例如,导航信息条、广告栏、版权信息等,这些冗余信息大大限制了网页的可用性,因此在本文中网页爬取的重点就是如何快速的提取这些链接,而网页处理的重点则是去除网页中的冗余信息。本文利用正则表达式的灵活性实现了对网页中链接地址的提取和网页中冗余信息的剔除。在获取链接地址进行网页爬取的同时对网页信息进行提取,同时基于最大化匹配算法实现中文分词算法,并利用DotLucne提供的接口功能成功实现对提取网页信息的索引,经过网页信息的提取和分词预处理,检索过程建立的索引更小,检索的效率和结果更加理想,并基于此索引为用户的查询请求提供服务。关键词:搜索引

4、擎;网页爬取;ASP.net;中文分词;AbstractWith the rapid developnebt of the Internet,it has become the largest information source in our life.Information search an retrieval for ordinary users become more and more difficult.The emergence of search engines greatly improves this situation.Search engine has made a c

5、onstant development with the development of the Internet,but uts gradually shifting to conmmercial operation makes the technical details of search engine more and more hidden.With the start point of three basic requirments of search engines as Web Spider,PagesProcessing and Providing Servives,this p

6、aper divides the system into three functional modules,and based on ASP.NET,this paper explores the principle and realizes one search engines.In web pages,three are a large number of links,how to fetch out these links fast is the key point of the Web Spider in these paper.At the same time,web pages c

7、ontain a lot of redundant informationg,navigation tools,advertising fields,copyright information and so on,these redundant information limit the availability of information.So how to remove the redundant information is focus of the page processing.As regular expressiongsflexibility,this paper uses r

8、egular expressions to achieve the extraction of linksand remove redundant information in web pages.Extraction of pagesinformation is doing while Web Spider is fetching pages.After that,this paper realizes Chinese Word Segmentation based on Maximum Matching,and achieves indexing of pagesinformation w

9、ith the interface of Lucene.Net.After the information extraction and segmentation pre-processing, the index is much smaller and the retrieval efficiency and resultsaccuracy is more satisfactory.Based on this index,system provides services for the usersquery request.KeyWords: Search Engine; Spider; A

10、SP.net; Chinese words segmentation第一章 绪论1.1搜索引擎的背景及意义搜索引擎(Search Engine)是指根据一定的策略、运用特定的计算机程序搜集互联网上的信息,在对信息进行组织和处理后,为用户提供检索服务的系统。而从使用者的角度看,搜索引擎提供了一个包含搜索框的页面,在搜索框输入词语,通过浏览器提交给搜索引擎后,搜索引擎就会返回跟用户输入的内容相关的信息列表。1990年以前,没有任何人能搜索互联网。1990年诞生的Archie 是一个可以用文件名自动索引互联网上匿名FTP网站文件的程序,它实现了搜索,但还不是真正的搜索引擎。现代意义上的搜索引擎出现于

11、1994年7月,当时Michael Mauldin将JohnLeavitt的蜘蛛程序接入到其索引程序中,创建了大家现在熟知的Lycosa。1995年末,Altavista永远改变了搜索引擎的定义,AItavista是第一个支持自然语言搜索的搜索引擎,也是第一个实现高级搜索语法的搜索引擎。1998年,Google在Pagerank、动态摘要、网页快照、DailyRefresh、多文档格式支持、地图股票词典寻人等集成搜索、多语言支持、用户界面等功能上的革新,象Altavista一样,再一次永远改变了搜索引擎的定义。现阶段,出现Ask Jeeves, B, G,MySimon,Dito等内容类别不同

12、的搜索引擎。从出现第一个搜索引擎至今,搜索引擎技术已获得了飞速的发展,现在的搜索引擎功能越来越强大,提供的服务也越来越全面,它们的目标不仅仅是提供单纯的查询功能,而是把自己发展成为用户首选的Internet入口站点。互联网被普及前,人们查阅资料首先想到的便是拥有大量书籍的图书馆,而在当今很多人都会选择一种更方便、快捷、全面、准确的方式互联网如果说互联网是一个知识宝库,那么搜索引擎就是打开知识宝库的一把钥匙搜索引擎是随着WEB信息的迅速增加,从1995年开始逐渐发展起来的技术,用于帮助互联网用户查询信息的搜索工具搜索引擎以一定的策略在互联网中搜集、发现信息,对信息进行理解、提取、组织和处理,并为

13、用户提供检索服务,从而起到信息导航的目的目前搜索引擎已经成为倍受网络用户关注的焦点,也成为计算机工业界和学术界争相研究、开发的对象1.2 搜索引擎的现状随着个人计算机的普及和网络技术的发展, 越来越多的数据和信息可以从网络上无偿获取。比如,目前Google已经可以搜索约31亿个网页。这样一个浩瀚的信息海洋,是人类共同创造的精神财富,其中包含很多对生活和科研非常有价值的信息。但是,从这个数据的海洋中检索到我们所需要的信息,真所谓“大海捞针”。没有网络搜索引擎(Search Engine)技术这简直是不可能的。网络搜索是每一个网络用户所关心的问题,也是研究信息检索和处理的工作者所面临的巨大挑战。

14、网络搜索牵扯到很多研究领域,如信息检索、数据库、数据挖掘、系统技术、多媒体、人工智能、计算机网络、分布式处理、数字图书馆、自然语言处理等许多领域的理论和技术,并已成为一种综合性的技术。以前数据库技术主要处理的是结构化的数据(能以二维表格的形式来表示),通过查询语言,能够得到准确的结果。然而更多的数据和信息是无法用二维表格来表示,特别是一些电子文档和WEB页(称为无结构数据或半结构数据)。因此和数据库检索不同的是,信息检索得到的结果是近似(相似)结果而非确切结果。 因特网出现之前,搜索引擎也存在并发挥着作用,搜索范围从简单文本到大容量数据库不断发展,搜索技术从关键词查找到全文检索不断进步。迅速发

15、展的因特网改变了一切,新的网络搜索引擎比传统搜索引擎有了质的飞跃。传统搜索引擎面对的是增长缓慢的、有限的数据,而且数据的格式非常统一,但是网络搜索引擎面对的是指数增长的、几乎无限的数据,数据内容格式各不相同。网络数据还有其自身的特点如包含有大量的“垃圾”数据,网页之间有链接(Hyper-link),即使是近似内容的网页也可能在网页设计,用词造句等方面有很大的差距。这些特点和现实使得传统搜索引擎技术的算法无法适用于面对海量数据的网络搜索。现代的网络搜索引擎技术已同传统的搜索引擎技术在算法、计算环境、理论模型等方面有了根本的不同,不仅可以根据(网络)文档的内容,文档之间的链接,还可以根据用户对网页

16、的访问模式进行计算等。 现代搜索引擎与传统搜索引擎都有共同的目标,就是查全与查准,只不过新的时代环境为新技术赋予了更多的内涵。从结构上看,现代搜索引擎主要有搜集(Robot或Spider的作用)、索引、查询,排序及结果处理五部分。其中索引和排序是核心技术,也是目前研究的重点。目前的搜索引擎还是基于关键词的,往往一个关键词带来成千上万的搜索结果。用户不可能一一查看每一个搜索结果,因此搜索结果的排序非常重要。例如一个用户输入关键词“哈佛” 进行搜索,他很可能想看的结果是哈佛大学的主页,而不是随便的一个恰巧包含“哈佛”一词的网页。所以一个好的搜索引擎会在提供给用户的结果中将一些“高质量”的网页排在前

17、面。然而什么样的网页能称为”高质量”,不同的用户可能有不同的看法。从目前的研究和应用角度来说,既该网页包含关于某个“主题”的具体信息,同时被“很多”其它“高质量”的网页所链接指向。 不同领域的研究人员目前正在从不同的角度努力提高搜索引擎的性能。如数据库研究人员考虑如何能从网页中抽取出结构化的数据信息来,如何提高检索机制,信息检索的研究人员考虑如何能将“垃圾”网页去除,检索结果进行有效分类来方便用户的查看,如何对不同的用户(即使是相同的搜索关键词)提供不同的搜索结果来满足不同用户的需求。同时现代搜索引擎也引起一些相关的研究课题,如信息抽取,链接分析,服务器“日志”分析(以得到访问用户的行为兴趣模

18、式),推荐系统(如AMAZON网上书店的推荐系统)等。同时我们也看到基于关键词的搜索有其局限性,而且这种局限性随着网络的发展也日渐明显。很多情况下,用户的需求不能仅用几个关键词表达清楚,甚至在很多情况下用户本身也不是很清楚自己的搜索要求,这时候需要搜索引擎能够进行多层次的搜索,从粗到细,逐步精化和缩小搜索范围。 目前商业用的搜索引擎很多,如Yahoo, Google等。 因特网使得技术的发展日新月异。处在“知识经济”基础设施地位的网络搜索引擎必将得到更多的重视与发展,同时也充满着机遇与挑战。第二章 搜索引擎概述2.1 搜索引擎的概念随着信息的科学技术的不断发展,网络已经成为人么生活中的重要组成

19、部分,互联网作为信息交流的中心与枢纽,作用愈显重要。互联网上有众多却杂乱无章的信息,而且各种信息以几何级数的方式增长,大量信息扑面而来,怎么样快速,准确,简单地获取人们需要的信息,成为人们迫切需要解决的问题。在此情况下,搜索引擎诞生了,进过数十年的发展,目前已经成为人们日常生活中必不可少的工具。搜索引擎是指根据一定的策略,引用特定的计算机程序搜集互联网上信息,在对信息进行组织和处理后,为用户提供检索服务的系统。搜索引擎一般由搜索器、索引器、检索器和查询器4个部分组成。1)搜索器在互联网中发现并且取回尽量多的网页信息;2)索引器将搜索器所搜索到的网页信息切分成多个关键字,以关键字作为索引项,用于

20、表示文件以及生成文件库的索引表;3)检索器根据用户的查询在索引库中快速检索文件,进行相关度匹配,对检索到的结果进行排序,返回相应的网页给用户;4)查询器的作用是接纳用户查询,显示查询结果,提供个性化查询项。2.2 搜索引擎的发展搜索引擎大约经历了三代的更新发展:第一代搜索引擎出现于1994 年前后。以Altavista, Yahoo 和Infoseek为代表,注重反馈结果的数量,主要特征是“求全”。它主要依靠人工分拣的分类目录搜索,通常由网页制作人自行建立网站名称、网站内容的文字摘要,并将其加入到搜索引擎的资料库中。搜索引擎根据用户键入的信息,根据预先设定的规则进行简单的匹配、排序和显示。这种

21、方法只能进行简单的字符串匹配,无法进行全文搜索。研究表明,搜索引擎性能并没有想象中的那么优秀,在全球11 个主要的搜索引擎中,搜索引擎仅能搜索到国际互联网上全部页面的16%,甚至更低,造成这种情况的原因,主要是这些搜索引擎没有及时更新资料。第二代搜索引擎,利用超链接分析为基础的机器抓取技术,由搜索引擎使用一个程序在网络上撷取资料,并自动将得到的结果存入索引库中。搜索引擎根据用户键入的信息进行匹配、排序和显示。这些引擎的主要特点是提高了查准率,可以用“求精”来描述它的优点,即不需要网站制作人单独键入供搜索的信息,并且从理论上讲,可将任意网站的所有网页加入到它的资料库中。第二代搜索引擎的大多数查询

22、都会返回成千上万条信息,查询结果中无关信息太多,而且查询结果显示比较混乱,使用者仍然难以找到真正想要的资料。第三代搜索引擎是对第二代搜索引擎的改进,相对于前两代,其更注重智能化和用户使用的个性化,主要增加了互动性和个性化等高级的技术,采用了中文自动分类、自动聚类等人工智能技术,而且使用了中文内容分析技术以及区域智能识别技术,增强了搜索引擎的查询能力。同时,搜索技术将更加智能化,可搜索资源将更加广泛,搜索方式也将更加便捷有效,为用户使用搜索引擎获取信息获得更好的体验。2.3 搜索引擎的工作原理搜索引擎(search engine)是利用信息挖掘系统在网际空间寻找和挖掘相关或有用信息,在此基础上建

23、立检索数据库,并通过提供简单友好的查询界面帮助用户进行网络信息检索的信息服务系统或工具。搜索引擎实际是Internet上的一类网站,这类网站与一般的网站不同,其主要工作是自动搜寻Web服务器的信息,将信息进行分类、建立索引,然后把索引的内容存放到数据库中,便于以查询和利用的方式提交给用户。Robot也就是Spider或Crawler,从事先制定好的URL列表出发自动访问WWW网页,分析提取网页中超文本的URL,将其加入列表,并根据URL列表进一步访问其他网页。分析索引器是一个数据库,Robot采集到的网页信息全部存于其中。数据库的规模直接影响了系统查询的查全率。有些记录了网页的全部内容,对整个

24、HTML文件的所有单词都建立索引,有的只记录网页的地址、标题、关键词、摘要等信息,还有的能处理HTML文件中的META的标记或其他不可见的特殊标记。检索器根据用户查询在索引库中快速检索出文档,并按照一定的算法进行结果页的排序;查询接口提供用户访问的查询界面和服务端的查询程序,当用户查询一个关键词时,搜索引擎将搜索数据库,找出所有与关键词相符合的网页,按照一定算法生成结果网页返回用户浏览器。搜索引擎的工作流程:互联网网页爬取网页处理提供服务用户查询词查询列表图1搜索引擎的工作流程图下面对搜索引起过的流程做大体介绍:网页抓取:每个独立的搜索引擎都有自己的抓取程序(Spider)。Spider顺着网

25、页中的超链接,连续的抓取。被抓取的网页称为网页快照。由于互联网中链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。网页处理:搜索引擎抓到网页后,还要做大量的处理工作,才能提供检索服务。首先,将抓取的网页按照其所属的类别进行分类,然后,对这些被分类的网页进行提取,其中,最重要的就是提取关键词,建立索引文件。其中还包括去除重复网页,分析超链接,计算网页的重要度。提供服务:用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。2.4 .NET简介所谓.NET,是指微软公司推出的.

26、NET框架(即.NET Framework)。.NET Framework是一个可以提供多种语言组件开发和执行支持的环境。换句话说,它能够提供一个编程环境,但这个环境却没有开发语言的限制。.NET存在的目的就是能够让程序员更高效的建立各种Web应用程序和服务,并让Internet上的应用程序之间可以通过使用Web服务进行沟通。.NET框架主要包括3个组成部分:服务框架、公共语言运行时和应用程序模版。.NET提供了两类模版可供用户自主选择,分别为Windows应用程序模版(Windows Forms)和Web应用程序模版(Web Forms和Web Services),用户可以使用这两类模版分别

27、进行快速的Windows程序开发和Web程开发。ASP.NET是一项功能强大,非常灵活的新技术,它用于编写动态的Web页面。ASP.NET是Microsoft公司的ASP和.NET Framework这两项核心技术的结合。ASP.NET是利用.NET Framework 提供的新功能来创建动态Web页面的一种方法,ASP.NET建立在公共语言运行库上的编程框架,可用于在服务器生成功能强大的Web应用程序。与传统的ASP相比,ASP.NET功能更为强大,也更加稳定安全,已经不仅仅是ASP的改进和增强,其条理清晰的前后台分离代码以及许多的集成功能更是可以达到ASP无法达到的高度,从而能够成为Web

28、应用程序开发的主流。第三章 搜索引擎的设计3.1网页搜集3.1.1网络爬虫的介绍网页搜集器是搜索引擎的中心部分之一,也叫网络蜘蛛,Internet搜索引擎的数据就是通过网络蜘蛛获得的。网络蜘蛛主要是指依赖Web页面之间的链接关系,从Web上自动地获取页面信息,并且根据网页之间的链接不断向所需要的Web页面进行扩展的过程。它由一个网页抓取程序组成,所谓网页抓取程序是指会自动地在网络中下载网页的程序。对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的。从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。原因之一就是抓取技术的瓶颈,无法遍历所有的网页,有许多网页

29、无法从其他网页的链接中找到;另一个原因是存储技术和处理技术的问题,由于数量太大,在提供搜索时也会有效率方面的影响。因此,搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性的主要依据是某个网页的链接深度。网络蜘蛛对于文件的处理 :(一)二进制文件处理 网络上除了有大量的HTML文件和XML文件外,也有大量的二进制文件。为了使网页的内容更加丰富,图片和多媒体文件被网页大量的引用。它们在网页上也是以超链接的形式出现的,因而在链接提取的阶段它们也是会被放在待访问队列中。对于二进制文件通过文件的内容来完成文件的索引是不现实的,现在的技术还没有达到可以通过二进制文件来理解文件内容的地步。因

30、而对于这些文件的处理一般是采用单独处理的方式,其内容的理解完全需要依靠二进制文件的锚点描述来完成。锚点描述通常代表了文件的标题或是基本内容。锚点信息一般是由引用网页来提供,而不是放在二进制文件本身。二进制文件由于种类的差别问题,也需要分别来进行处理。 (二)脚本文件的处理 这里说的脚本文件一般指的是包含在网页中的客户端脚本,它会在网页下载到客户端的时候才会运行,通常会在客户端上完成一些简单的交互工作。脚本文件一般会在网页中负责网页的显示工作,但由于ajax技术的广泛使用,它也会负责与服务器端的交互工作。由于脚本语言的多样性和复杂性,对它的分析处理无异于制作一个简单的网页解析程序。正是因为处理脚

31、本文件相当困难,许多小规模的搜索引擎往往会直接省略对它的处理。但是由于现在网站设计者对于无刷新页面要求的提高和对ajax技术的大量使用,如果忽略了对它的处理将会是一项巨大的损失。 网络爬虫的搜索策略:在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先。深度优先搜索策略:只考虑链接的层次关系,如果将链接看成是树型结构,深度优先搜索就是先访问链接树的一个分支,再回到链接树的根节点访问另外一个分支。这种方式优点在于容易设计以及可以及时搜索到某个链接下足够深度的链接;缺点是某些层次高的链接不能够及时访问甚至有可能访问不到广度优先搜索策略:广度优先搜索是按照链接树的一个一个层次来进行访问。这种

32、方式的优点在于爬行下来的网页质量较高,层次高的网页能够得到及时访问以及可以很好地保证链接间的层次关系;缺点是只是简单地按照层次关系进行搜索,并没有引进其他策略,同样不能满足专业领域搜索的需求。通过大量的研究证明,宽度优先搜索策略的实际运行结果优于搜索策略。通用网络蜘蛛通常采用广度优先的遍历方法,试图从一个局部区域中得到尽可能多的网页。目前多数通用搜索引擎大都是使用这种通用网络蜘蛛从互联网上搜索各种资源并下载,然后加以索引,以供用户通过输入关键字进行查询。研究表明按照宽度优先的搜索方式得到的网页集合要比深度优先搜索得到的集合重要,但这种方式搜集到的网页不太会超过网络蜘蛛所能覆盖范围内的所有网页数

33、量的三分之二。由于网站的内容经常发生变化,因此网络蜘蛛也需要不断呃更新其抓取网页的内容,哪些页面是新增页面,哪些页面是已经过期的的死链接。但更新周期对搜索引擎搜索的查全率有很大的影响。如果更新周期太长,则总会有一部分新生成的网页搜索不到;周期过短,技术实现会有一定难度,而且会对带宽、服务器的资源都有浪费。因此对于搜索引擎来说,更新周期的灵活性也应是一个考虑方面,它应该是可由管理员控制的3.1.2网络爬虫设计网络蜘蛛第一次运行,根据起始网页库中给定的网页,分析网页的源文件,把分析出来的URL放进待取队列,把已经处理过的原始网页放进已抓取队列,并根据网页URL在哈希表中添加一个新元素,然后工作线程

34、从待抓取队列中取出URL继续分析进而提取超链接,把新提取出的URL与哈希表中已存在的元素进行对比。如果在哈希表中存在,表明该URL已经存在,放弃该链接;如果不存在,则在哈希表中生成一个新元素,并且把该URL放入待抓取队列,然后工作线程继续取出链接进行爬行,一直循环下去,知道满足系统停止条件。网页爬取模块是搜索引擎实现的重点,它也是搜索引擎的重要要求之一,在Spider爬取到每一个网页并获取此页面的源代码后,便可以进行网页的处理,从源代码中得到所需要的信息,同时剔除网页中的无用信息,下图给出了爬取模块的数据流程图:初始的URL爬取网页源代码处理网页源代码标识已处理的网页爬取的网页地址网页源代码已

35、处理的网页信息IndexData处理后的网页信息图2网页爬取流程从上图可以看出网络爬取模块的数据流程图:,首先Spider从初始网页库中读取网页列表,然后取出开始网页列表中的每一个网址,获得其源代码,然后再词从源代码中提取网页标题和链接地址,添加到开始列表中,同时对网页进行处理,将处理后得到的网页信息存放到数据库中以方便为索引提供新,并对处理过的网页进行标记。以此循环从而实现Spider的不断爬取。C#语言对HTTP协议提供了良好的支持,在.NET类库中提供了WebRequest和WebResponse类,这两个类都包含在System.Net命名空间中,利用这两个类可以实现很多高级的网络功能。

36、实际使用中,可根据URI参数中的URI前缀选用它们合适的子类,对于HTTP这类URI,HttpWebRequest和HttpWebResponse类可以用于处理客户程序同WEB服务器之间的HTTP通讯。HttpWebRequest类实现了很多通过HTTP访问WEB服务器上文件的高级功能。HttpWebRequest类对WebRequest中定义的属性和方法提供支持,HttpWebRequest将发送到Internet资源的公共HTTP标头的值公开为属性,由方法或系统设置,常用的由属性或方法设置的HTTP标头为:接受, 由Accept属性设置, 连接, 由Connection属性和KeepAli

37、ve属性设置, Content-Length, 由ContentLength属性设置, Content-Type, 由ContentType属性设置, 范围, 由AddRange方法设置. 实际使用中是将标头信息正确设置后,传递到WEB服务器,WEB服务器根据要求作出回应。HttpWebResponse类继承自WebResponse类,专门处理从WEB服务器返回的HTTP响应,这个类实现了很多方法,具有很多属性,可以全面处理接收到的互联网信息。在HttpWebResponse类中,对于大多数通用的HTTP标头字段,都有独立的属性与其对应,程序员可以通过这些属性方便的访问位于HTTP接收报文标头

38、字段中的信息,本例中用到的HttpWebResponse类属性为:ContentLength 既接收内容的长度。下面一段代码就是使用HttpWebRequest类下载网站的内容HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create();HttpWebResponse rsp = (HttpWebResponse)hwr.GetResponse();Stream ns = rsp.GetResponseStream();3.1.3网络蜘蛛的实现首先需要定义一个类来存储页面信息。类的属性如下:public class Pagepublic st

39、ring pageSource; /页面源代码public string pageURL; /页面地址public string pageTitle; /页面标题public string pageContent /页面内容public string pageCoding/页面编码格式public string pageKind/页面类型public DateTime gettime /页面抓取时间 下面是网页爬取的具体流程图:初始化待处理URL队列是否为空读取URL,获得网页文件解析网页内容,提取新的URLURL已存在添加到待处理URL队列结束 是否 是否 保 存图3网页抓取具体流程图从图中

40、可以看到,网络蜘蛛需要从下载的页面里提取出里面的超链接,并把这些超链接加入到待处理的URL队列中,以实现网络蜘蛛的不断循环爬取网页。判断获取页面的类型,是二进制文件还是文本文件,对于不同的文件要做不同的处理。如果是文本文件要逐行读取,不然在windows下”rn”会出现乱码。SaveBinaryFile(rsp)将文件保存为二进制文件SaveTextFile(buffer, encode);将文件按文本文件保存3.1.4数据库设计按照数据库的设计原理,数据库由多个数据表组成,数据表又按照一定的格式由一条条记录组成。数据表设计时,主要明确组成该表格的字段组成名称,字段类型,字段长度以及其他的一些

41、约束条件,如是否允许空值,是否表格的关键项或者规定该字段的取值范围或者代码规则等,故系统数据库设计主要是设计数据库中呃基本数据表,以及不同数据表之间的关系,以形成各种临时表或者视图。表1网页信息表字段名数据类型描述pageIDint网页编号,自动编号pageTitlenvarchar(50)网页标题,不允许为空pageUrlnvarchar(50)网页地址,不允许为空pageSourcenvarchar(50)网页源代码pageContentnvarchar(50)网页内容pageCodingnvarchar(50)网页编码类型pageTimedatatime网页存储时间DataTable d

42、t=new DataTable ();ad.Fill(dt);foreach (Page page in listPage) DataRow row = dt.NewRow();rowpageTitle=page.pageTitle;rowpageUrl = page.pageUrl;rowpageSource = page.pageSource;rowpageCoding= page.pageCoding;rowpageContent = page.pageContent;row存储时间 = DateTime.Now;上述代码为: 连接数据库,并将得到的网页信息存储到数据库中。3.2 网页的

43、信息处理3.2.1 倒排索引索引是搜索引擎核心技术之一,索引是检索时的主要查询工具,对于搜索引擎而言,目前大部分搜索引擎都使用倒排索引技术啊,带牌索引的建立过程主要包括文档编号,正排索引和正排索引向倒排索引转换。首先需要建立一个词库,然后在网页信息中查找每个词出现的频率和位置,把这样的频率和位置信息按照词库的顺序归纳,这样就相当于对网页信息建立了一个以词库为目录的索引,这样搀着某个词的时候就能很快的定位到该词出现的位置。Lucene是Java中常用到的索引API,使用它提供的方法可以为文本资料创建索引,并提供检索。L来源于Lucene,它是Luecen的一个.Net移植。Luecen的API接

44、口设计的通用。输入输出结构都很像数据库的表-记录-字段,所以很多应用文件,数据库都可以比较方便的映射到Lucene的存储结构中。数据库中提供了索引的解决方案,但数据库不是为全文索引设计的,因此,使用LIKE关键字时,数据库索引是不起作用的,在使用LIKE查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,LIKE对性能的危害是极大的。所以建立一个高效检索系统的关键是建立一个反向索引机制,将数据源排序顺序存储的同时,有另一个排好序的关键词列表,用于存储关键词-文章映射关系,利用这样的映射关系索引,检索过程就把模糊查询变成多个可以利用索引的精确查询的逻辑组合过

45、程。从而大大提高了多关键词查询的效率。表2 Luecen和数据库的比较Lucene数据库索引将数据库中的数据通过全文索引一一建立反向索引数据库要遍历逐个记录进行模糊匹配,搜索速度很慢匹配效果通过词元进行匹配,通过语言分析接口的实现使用LIKE模糊匹配会造成匹配的混乱匹配度有匹配度算法没有匹配程度的控制结果输出通过特别的算法,将匹配度最高的前100个记录输出返回所有的结果集,在匹配非常多时,需要大量的内存3.2.2 Lucene.Net介绍Lucene.Net是什么?Lucene.Net是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能.Lucene.Net的使

46、用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能.Lucene.Net 能做什么?Lucene.Net可以对任何的数据做索引和搜索. Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以被Lucene所分析利用.也就是说不管是MS word, Html ,pdf还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene.Net可以用Lucene.Net行索引以及搜索.建立索引前,先了解下Lucene.Net 中的一些与索引相关的重要类。为了对文档进行索引,Lucene.Net 提供了五个基础的类,他们分别是 Do

47、cument, Field, IndexWriter, Analyzer, Directory。下面我们分别介绍一下这五个类的用途:DocumentDocument 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。一个 Document 对象由多个 Field 对象组成的。可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。在建立索引的时候,也就是实例化一个索引器IndexWriter的之前,必须通过已经建立好的Document逻辑文件,将Document的对象添加到IndexWriter实例中,才能算是建立索引。FieldField 对象是用来描述一个文档的某个属性的,比如一封电子邮件的标题和内容可以用两个 Field 对象分别描述。Document汇集数据源,这个数据源是通过Field来构造的。构造好Field之后,将每个Field对象加入到Document之中,可以通过Document

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922