基于索引技术的网络数据检索优化的研究与应用05级陶雨丰.docx
《基于索引技术的网络数据检索优化的研究与应用05级陶雨丰.docx》由会员分享,可在线阅读,更多相关《基于索引技术的网络数据检索优化的研究与应用05级陶雨丰.docx(42页珍藏版)》请在冰豆网上搜索。
![基于索引技术的网络数据检索优化的研究与应用05级陶雨丰.docx](https://file1.bdocx.com/fileroot1/2023-2/7/dd68e835-8906-4469-b79b-ac45a22a3793/dd68e835-8906-4469-b79b-ac45a22a37931.gif)
基于索引技术的网络数据检索优化的研究与应用05级陶雨丰
学号___200532660050__
密级______绝密______
武汉大学本科毕业论文
基于索引技术的网络数据检索优化的研究与应用
院(系)名称:
国际软件学院
专业名称:
空间信息与数字技术
学生姓名:
陶雨丰
指导教师:
范昊教授
二○○九年五月
BACHELOR'SDEGREETHESIS
OFWUHANUNIVERSITY
WritingthetitleofthepaperinEnglishhere
College:
XXXXXX
Subject:
XXXXXX
Name:
TaoYuFeng
Directedby:
FanHaoProfessor
May2009
郑重声明
本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。
尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。
对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。
本学位论文的知识产权归属于培养单位。
本人签名:
日期:
摘要
搜索引擎以一定的策略在Web上搜集和发现信息,在对信息进行处理和组织后,为用户提供Web信息查询服务。
按功能划分大致可以被分成三个模块,或三个子系统:
网络爬虫模块(即对网络信息的搜集),网页索引模块和提供查询查询服务的模块。
在预处理部分中,索引器这个核心组件优越与否是衡量一个Web搜索引擎能力的重要标准,它在一定程度限定了整个搜索引擎的性能,比如和用户搜索内容的匹配程度,检索索引文件的速度是否迅速等。
因此,本文针对如何优化检索网络数据进行分析和研究,利用的技术主要是索引技术,而索引器正是实现并包含了这个技术的核心组件。
所以本文将针对索引器的组织以及结构进行详细的分析和说明。
本文首先从整个搜索引擎的背景及研究现状入手,分析了如今搜索引擎的发展趋势。
第二章描述了研究中运用到得技术。
第三章详细分析了索引器的结构以及工作原理,包括网页内容过滤模块,中文分词模块,倒排文件存储模块。
在第四章中给出了部分模块的代码实现。
最后,文章总结了作者在索引子系统研究过程中的主要工作和收获,以及研究中的不足之处,并提出了几项未来需要继续进行的工作。
ABSTRACT
SearchEngineisusedtosearchandcollectinformationatInternetwithusingsomesearchingstrategy.AndthendisposalororganizetheinformationcollectedfromInternetinordertosupplywebinformationsearchingservicetoweb-user.SearchEngineisseparatedinthreemodelsorthreechild-system:
WebCrawlersmodel(searchinginformationatInternet),webindexmodelandsearchingservicemodel.Inthesecondmodel,indexsystemisonecorecomponentofallSearchEngineSystemthatsupplyacrucialstandardtojudgetheperformanceoftheSearchEngine.
So,thisthesiswillintensivelydescribeanddiscusshowtoimprovethedatasearchinginweb,mostlyusingtheindex-technic.
First,thispassagedescribescurrentbackgroundandtrendofdevelopmentofSearchEngine.Theninthesecondparagraphtellsaboutthetechnologyusinginimplementofthisresearch.Andthethirdparagraphdiscussthestructureandworkingprincipleofindex-model,includingfilterofwebcontent,child-modelofwordseparationofChineseandthestorageofindexfiles.Thenthenextparagraphgivesthedetailedimplementationofcoremodelsofindex-system.Atlastthepassagesummarizetheallcontentofthethesisandsomepositionsneedtobeimproved.
目录
目录6
第一章概述7
1.1研究背景及意义7
1.2研究现状8
1.3题目由来9
1.4存在的问题10
1.5本文的内容10
第二章技术11
2.1技术概论11
2.2建立索引器的关键技术11
2.2.1信息收集和存储技术11
2.2.2信息的预处理技术11
2.2.3分词技术12
2.2.4索引技术12
2.2.5搜索引擎的性能指标12
2.3技术介绍12
2.3.1实现语言介绍12
2.3.2实现中包含的具体技术:
13
第三章系统的分析与设计15
3.1系统需求分析15
3.1.1搜索引擎原理:
15
3.1.2搜索引擎的工作流程15
3.1.3整体系统分析16
3.2索引器需求分析17
3.3索引器的索引机制18
3.3.1索引机制介绍18
3.3.2索引器的词语索引19
3.3.3文档索引19
3.4索引器的组成结构以及流程20
3.4.1索引器的结构以及流程20
3.4.2索引器各模块功能介绍21
第四章系统的实现24
4.1索引系统接口24
4.1.1公共接口24
4.1.2与分词模块的接口25
4.1.3与检索器的接口26
4.2过滤模块的实现27
4.3分词模块的实现28
第五章总结展望33
致谢34
参考文献35
附录36
第一章概述
1.1研究背景及意义
信息的生产、传播、搜集与查询是人类最基本的活动之一。
现如今随着互联网的不断发展和日益普及,网上的信息量在爆炸性增长,在2004年4月,全球Web页面的数目已经超过40亿,中国的网页数估计也超过了3亿。
目前人们从网上获得信息的主要工具是浏览器,而通过浏览器得到信息通常有三种方式。
第一,直接向浏览器输入一个关心的网址(URL),例如,浏览器返回所请求的网页,根据该网页内容及其包含的超链文字(anchortext)的引导,获得自己需要的内容;第二,登录到某个知名门户网站,例如,根据该网站提供的分类目录和相关链接,逐步“冲浪”浏览,寻找自己感兴趣的东西;第三,登录到某个搜索引擎网站,例如,输入代表自己所关心信息的关键词或者短语,依据返回的相关信息列表、摘要和超链接引导,试探寻找自己需要的内容。
这三种方式各有特点,各有自己最适合的应用场合。
第一种方式的应用是最有针对性的,例如我想要进行邮件的发送和接受,于是就可以手动在地址栏里输入地址,比如””,于是直接用它驱动浏览器就是最有效的方式。
第二种方式的应用类似于读报,用户不一定有明确的目的,只是想看看网上有什么有意思的消息;当然这其中也可能是关心某种主题,比如当前的事实新闻和股市行情等等。
第三种方式适用于用户大致上知道自己要关心的内容,例如“假期热点旅游”,但不清楚哪里能够找到相关信息(即不知道哪些URL能给出这样的信息);在这种场合,搜索引擎能够为用户提供一个相关内容的网址及其摘要的列表,由用户一个个试探看是否为自己需要的。
现在的搜索引擎技术已经能做到在多数情况下满足用户的这种需要。
CNNIC的信息统计指出,目前搜索引擎已经成为继电子邮件之后人们用得最多的网上信息服务系统。
另外,通过下面这则消息可以看出,信息服务在人们生活中的重要性,根据中国互联网络信息中心2006年7月发布的第18次中国互联网报告称:
调查显示,浏览新闻、搜索引擎、收发邮件是网民经常使用的三大网络服务,三者的选择比例分别为浏览新闻66.3%,搜索引擎66.3%,收发邮件64.2%,这三大网络服务的选择比例领先其后的第二阵营20个百分点以上,正好这3者可以对应上面所说的3种信息服务,可见网络提供给人们的信息服务已经日益成为人们生活中重要的信息来源。
在短短的几年间,信息查询服务发展迅速,而搜索引擎在其中起到关键作用,信息查询的准确性和高效性更是一个优秀的搜索引擎所必不可少的。
目前的索引技术主要是应用倒排文档的倒排序技术:
倒排索引是一种面向单词的索引机制,利用它可以提高检索时的速度。
通常情况下,倒排索引结构由“词典”和“出现情况”两部分组成。
对于每一个单词,都会有一个词汇列表记录单词在所有文档中出现的位置,这些位置可以是单词的位置(文本中的第几个单词)也可以是字符的位置(文本中的第几个字符)。
另外混合索引技术也在逐步从研究中运用到实践中。
1.2研究现状
现代意义上的搜索引擎出世于1994年7月,MichaelMauldin在其搜索引擎的索引程序中使用了JohnLeavitt的蜘蛛程序从而创建了现在大家熟知的Lycosa。
紧接着在1995年末,搜索引擎的定义再次被Altavista改变,它是第一个支持自然语言搜索的搜索引擎,同时也是第一个实现了更高级的搜索语法的搜索引擎。
在随后的几年间,Google问世了,它更为突出的地方在其Pagerank、动态摘要、DailyRefresh、网页快照、多文档格式支持、地图股票词典寻人等集成搜索、用户界面可根据用户个人爱好配置、多语言支持,在一定程度上再次打破了搜索引擎的定义。
而纵览现在的搜索引擎,出现了像AskJeeves,Baidu,Goto,MySimon,Dito等内容和类别都不相同的搜索引擎,为搜索引擎的后续开发注入了新鲜血液。
目前的搜索引擎主要有以下几个主要特点:
1.多样化和个性化的服务。
现在绝大多数搜索引擎都提供多样化的服务,以吸引更多的户,商业搜索引擎尤其注重这一点。
2.强大的查询功能与最早的搜索引擎相比,现在的搜索引擎在查询功能方面已有了很大的改进。
除了简单的AND、OR和NOT逻辑外,不少搜索引擎还支持相似查询。
3.目录和基于Robot的搜索引擎相互结合目录和基于Robot的搜索引擎都具有自己的特点,在当前的技术条件下,最好的选择是将两种技术进行结合,同时为用户提供这两种类型的服务。
目前的搜索引擎可按照以下类型分类:
(一)按照数据采集、分类索引的方法和服务提供方式的不同分类。
1.基于目录的搜索引擎:
它的特点是所有分类、索引工作都由人工编辑完成。
2.基于Robot的搜索引擎:
Robot有时也称为蜘蛛(Spider)、漫游者(Wanderer)、爬虫(Crawler)和蠕(Worm),是一种能够利用Web文档内的超链接递归地访问新文档的软件程序。
3.Meta搜索引擎:
即元搜索引擎、也叫做MultipleSearchEngine。
(二)按照搜索引擎的检索内容、服务对象的不同分类
1.综合性搜索引擎:
面向所有潜在的用户而设计,数据库容量非常大,收集了各方面、各学科、各行业数以千万、甚至以亿计算的网页内容。
2.专业性搜索引擎:
它是为了专门收录某一行业、某一主题和某一领域的信息而建立,这种搜索引擎专注于自己的特长和核心技术保证了对该领域信息的完全收录与及时更新。
(三)按照检索方式的不同分类
1.全文检索搜索引擎:
全文检索搜索引擎索引网站的全部页面,能够对网站的每篇文章的每个词进行搜索。
2.目录式分类搜索引擎:
目录式搜索引擎并不索引网站上的全部信息,而是首先把该网站归某个类目,再记录网站的概述性介绍。
(四)按照搜索引擎检索资源的类型分类
1.万维网搜索引擎:
万维网搜索引擎主要检索万维网上的信息资源,一般的搜索引擎都是万维网搜索引擎。
2.非万维网搜索引擎:
非万维网搜索引擎主要是对Internet上万维网之外的信息资源进行检索。
1.3题目由来
在整个搜索引擎中,搜索两个字可以完全体现了整个搜索引擎的功能,而搜索能力是否出色也代表了整个搜索引擎的实力所在。
如何判断搜索引擎的能力高低,可以简单的从这几个方面判断,首先是准确性,然后便是高效的速度。
而评判这2个能力的同时也是在评判搜索引擎的索引器能力的高低。
简单的说,在索引器中,包含了对原始网页内容的切分,并将切分内容按照一定得格式存储起来。
而当用户搜索的时候,便是通过一定得准则和这些切分好的词的集合进行匹配,并选出匹配度最高的词的集合,该词的集合所在的网页便是用户所查询的网页。
该网页是否是用户所需,其网页内容是否和用户查询的内容匹配可以直接或间接地看出一个搜索引擎的索引器的能力高低与否。
其次,索引文件存储机制的好坏与否会直接影响用户查询后并返回给用户目标网页的速度。
由此而看,索引器的好坏可以一定程度上影响搜索引擎的好坏,所以该篇论文的目的便是研究基于索引技术的网络数据的检索,更通俗的表达式,利用索引技术对对网页内容分析(包括过滤和检索)后的数据进行整理和存储。
1.4存在的问题
虽然搜索引擎已经为用户提供了快捷和便利的服务,但是也存在着许多问题和不足。
特别是在系统的稳定性、速度、易用性和返回信息量及相关度方面还与人们的要求存在着一定的差距,比如对人类自然语言的分析,机器并不同于人的大脑,现在对人们查询语句的分析仍停留在机械的分析上,而如果能使搜索引擎更加理解人们的查询内容,则会提供人们更精确的答复。
1.5本文的内容
本文在概述搜索引擎系统的同时详细描述了搜索引擎中的核心组件—索引器的基本概念,并进一步说明了索引器的特点和组成部分。
第二章主要是搜索引擎和索引器采用到得技术。
第三章是重点部分,即索引器的详细分析,其中包括索引的结构,原始网页过滤机制,中文分词技术,索引文件的生成策略,索引的更新。
第四章描述了索引器的详细设计,第五章是索引器的具体实现部分(包含部分代码)。
最后,第六章说明了这个索引器组件的一些优点和不足的地方,并提出了一些可以进一步改进的方面。
第二章技术
2.1技术概论
从整个搜索引擎系统上分析,其采用到得技术有:
多线程的利用,HTTP协议的具体应用,网页源文件内容过滤,中文分词技术,
提供高效搜索的文件存储机制等。
而在此篇文章中将着重分析网页源文件内容过滤、中文分词技术以及可以提
供高效搜索的文件存储机制,这几个技术构成了索引器的核心组件,即是基于了索引技术的网络数据的检索优化。
2.2建立索引器的关键技术
2.2.1信息收集和存储技术
网上信息收集和存储一般分为人工和自动两种方式。
人工方式采用传统信息
收集、分类、存储、组织和检索的方法.研究人员对网站进行调查筛选、分类、
存储。
由专业人员手工建立关键字索引,再将索引信息存入计算机相应的数据库
中。
自动方式通常是由搜索器(如:
robot、sPider)来完成的.搜索器的功能是搜
索因特网上的网页。
它定期在因特网上漫游,通过网页之间的链接,顺序地搜索
新的地址。
当遇到新的网页时,就给该页上的某些字或者全部字作上索引并把它
加到搜索引擎数据库中,由此,搜索引擎的数据库得以定时的更新。
一般说来,
人工方式收集信息的准确性要优于搜索程序,但是其收集信息的效率及全面性远
远低于搜索程序。
信息的存储则根据不同的分析结果和要求,针对提取的索引和
查询的目的而进行的。
可以采用专用的,也可以采用通用的数据库171181。
2.2.2信息的预处理技术
信息的预处理包括信息格式支持与转换、信息过滤19.目前,因特网上的信
息发布格式多种多样,这就要求搜索引擎支持多种文件格式。
从实际的情况看,
所有的搜索引擎都支持HTML格式,而对于其他文件格式的支持则不同的搜索
引擎有不同的规定,最多的能支持20多种文件格式。
同时搜索引擎还应具备信
第2章校园网
息格式转换功能,以保证不同格式的数据均能在网络流通。
信息过滤也是搜索引
擎的一项重要技术。
在因特网上,存在着大量的无用信息,一个好的搜索引擎应
当尽量减少垃圾站点的数量,这是信息过滤要着重解决的问题。
2.2.3分词技术
汉语以字为基本的处理单位,而作为有意义的最小语言成分的却是词。
与拉
丁语系的语言以空格作为词界不同,在汉语中词与词之间没有明显的区分标记。
众所周知,词在中文信息处理的诸多环节起着重要的作用,当然也包括了搜索引
擎。
因而在支持中文的搜索引擎中一个重要的技术就是词的切分,也称中文分词。
现有的分词算法可分为三大类:
基于字符串匹配的分词方法、基于理解的分
词方法和基于统计的分词方法。
基于理解的分词算法涉及汉语语言和知识,人工
智能等多个方面,目前还处于试验探索阶段。
基于统计的分词方法,时空开销大,
效率有限;基于字符串匹配的分词方法,常配有常用词词典,效率高,但难以排
除机械切分产生的歧义。
2.2.4索引技术
索引的功能是处理分词所得到的信息,从中抽取出索引项,将半结构化的数
据转换成方便检索的结构化的数据,用于表示网页以及生成网页库的索引表。
索
引是检索与数据之间的接口,是加快检索的有效方式,因此索引的好坏直接影响
到整个搜索引擎性能的好坏。
2.2.5搜索引擎的性能指标
关于搜索引擎质量的评价,国内外有许多文章都有论述,各有特色,但大多
仅仅局限于搜索引擎本身的性能评价。
一个搜索引擎质量的优劣不仅仅取决它自
身性能的优劣,而且还取决于它所附带的信息数据库资源的优劣。
评价一个搜索
引擎最主要的是看它的数据库容量、系统的检索功能、检索效率、更新情况、用
户界面的友好程度tl41。
除此以外,召回率(Recal)和精度(P概151on),也是搜
索引擎的性能指标。
召回率是检索出的相关文档数与文档集中所有的相关文档数
的比率,衡量的是搜索引擎的查全率;精度是检索出的相关文档数与检索出的文
档总数的比率,衡量的是搜索引擎的查准率。
对于一个检索系统来讲,召回率和
精度不可能两全其美:
召回率高时,精度低;精度高时,召回率低15·151.
影响一个搜索引擎性能的因素还有很多,最主要的是信息搜集策略和检索模
型,包括索引库的更新频率和策略、文档和查询的表示方法、评价文档和用户查询相关性的匹配策略、查询结果的排序方法和用户进行相关度反馈的机制。
2.3技术介绍
2.3.1实现语言介绍
在该项研究中,采用了C#语言来实现
选择C#语言是因为该语言是一个新兴的编程语言,它由Microsoft公司开发,并接继承了C++的高效和java的OOP特性,拥有优良的语言体系结构,语法结构类似java,可以大幅提高开发软件的速度,并且使编程人员容易上手和深入的学习。
C#具有以下的特点:
1.简洁的语法:
C#最大特点之一便是取消了指针,也同时取消了像C++中那些大量操作指针的符号。
2.优秀的面向对象设计:
C#具有面向对象的一切特性:
封装、继承与多态性。
通过这种良好的面向对象设计,无论应用在普通程序还是商业对象还是系统级应用,C#都是很好的选择。
3.与WEB的机密结合:
有了Web服务框架的协助,在编写网络服务程序的时候会更加的方便。
4.完整的安全性和错误处理能力
一个编程语言的安全性与错误处理能力可以说是衡量一种语言是否优秀的重要依据。
C#的先进设计思想可以消除软件开发过程中的常见错误,并提供了包括类型安全在内的完整的安全性能。
为了减少开发中的错误,C#会帮助开发者通过更少的代码完成相同的功能,这不但减轻了编程人员的工作量,同时更有效地避免了错误的发生。
另外,经过以往大量的系统开发经验,C#更适合开发与网络相关的服务应用程序,因此在选择开发语言的时候选择了C#。
在该项目研究中,采用了SQLSERVER2005数据库和文件系统并用的方式,采用这样的方式是综合考虑到数据的可存放行以及数据和文件的检索高效性。
因为SQLSERVER2005数据库自身存放文件的局限性,在实际应用中会涉及存放大小超过2G的文件,而这也是该数据库的限制所在,所以对于存放这种文件,改系统采用文件存储系统,而对于一些文件的ID标识的存放则考虑用数据库存放而不用文件系统,这样同时兼顾效率和可操作性。
2.3.2实现中包含的具体技术:
在具体的实现中,包含并运用了这些底层技术:
正则表达式的使用,C#中专门用于正则表达式的类Regex,Hash表的
应用,在分词技术中具体应用了正向减字最大匹配法,索引文件的倒排,可提供高效搜索的文件存储机制
下面简单介绍这几个技术:
正则表达式:
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。
正则表达式就是用于描述这些规则的工具。
换句话说,正则表达式就是记录文本规则的代码。
利用正则表达式可以任意对文本内容进行控制,可以保留想要的内容,并且可以过滤掉想要去除的符号,包括字符或者标点符号等等,在原始网页的处理中就是使用这种方法过滤掉页面中多余的部分。
正则表达式类Regex:
这个是C#中专有的类,它可以协助人们在处理字符串时按照Regex对象生成时候的参数(包括正则表达式,以及一些处理参数,比如可在运行前预编译提高分析速度,可以对多行进行正则表达式的匹配等)对字符串进行匹配并且用指定的字符串替换掉匹配合适的字段。
这个类使用起来非常简便而且使用起来很快捷,提高了对字符串处理的效率。
Hash表的应用:
在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。
Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对。
在应用中用到了一下的方法例子:
对哈希表的操作:
在哈希表中添加一个key/value键值对:
HashtableObject.Add(key,value);
在哈希表中去除某个key/value键值对:
HashtableObject.Remove(key);
从哈希表中移除所有元素:
HashtableObject.Clear();
判断哈希表是否包含特定键key:
HashtableObject.Contains(key);
中文分词技术:
考虑到中文比较特殊,不同于英文可以用空格来区分不同的词,中文