桌面搜索引擎的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密级:
页数:信息工程大学
毕业设计(论文)题目桌面搜索引擎的设计与实现
学员姓名桑亚平
学号G200726173
所在单位六系二十六队
指导教师王益伟
技术职务助教
完成日期2011-4-23
桌面搜索引擎的设计与实现
摘要:随着互联网的普及,搜索引擎得到了快速的发展,对人们的日常生活产生了巨大的影响。
人们对电脑硬盘容量的要求也越来越大,在电脑硬盘里包含的文件数量也与日俱增,这就使得人们如何很快很准确的找到自己所要想要的那个文件,成了用户的一个难题。
随着在海量文件中要找到自己所需文件的难题的出现,桌面搜索就应运而生了。
桌面搜索是搜索工具所应用的一个新领域的名称,这个领域是用户拥有的计算机文件的内容,而不是搜索互联网。
桌面搜索强调的是挖掘用户个人电脑上全部可用信息,包括网页浏览器历史,电子邮件档案,字处理器文档等等。
将搜索引入到桌面,一方面方便了用户的搜索工作,另一方面在搜索结果中整合进本地信息,也让用户实现了搜索时外部信息与本地信息的统一管理利用。
关键词:桌面搜索,PDF解析,中文分词
目录
第一章绪论 (1)
1.1 桌面搜索引擎的简介 (1)
1.2 主流桌面搜索引擎介绍 (1)
第二章桌面搜索引擎的总体设计 (4)
第三章 PDF文件的解析 (6)
3.1 PDF文件的简介 (6)
3.2 PDF的逻辑结构 (6)
3.3 PDF文件解析流程介绍 (7)
第四章中文分词简介 (9)
4.1 分词算法 (9)
4.2 中文分词的应用 (10)
第五章桌面搜索引擎的实现 (12)
第六章结论 (19)
参考文献 (20)
第一章绪论
1.1 桌面搜索引擎的简介
桌面搜索引擎也称为个人桌面引擎或个人硬盘搜索引擎,是对个人电脑上存储的信息进行查找的检索工具。
随着计算机以及互联网的普及,网络搜索引擎对人们的生活产生了巨大的影响,同时,现在个人电脑的硬盘容量越来越大,已经达到TB,硬盘里包含的Office文档、电子邮件、保存的网页、PDF文档等的数量都非常大,在如此多的文件中找到自己所需的文件变得很困难,这时候桌面搜索就应运而生。
桌面搜索与网络搜索不一样,首先从技术方面看,只有桌面搜索才算是全方位的搜索,它方便快捷,不用连接网络,就能找到用户要查找的内容。
它将搜索业务深入到个人电脑中,除了能找到用户所需要的网络信息之外,还可以帮助用户从个人电脑的海量资料中快速地查找到想要的信息。
其次,由于在电脑硬盘上的文档之间几乎没有什么联系,因此关于网页排名的算法不适用于桌面搜索,所以对桌面搜索的结果进行排序就不太重要。
最后,从市场的角度来看,桌面搜索市场发展的潜力最大,尽管搜索市场竞争非常激烈,但桌面搜索市场的增长潜力被普遍看好。
近年来,各大搜索引擎厂商纷纷推出了自己的桌面搜索引擎。
1.2 主流桌面搜索引擎介绍
现在桌面搜索的开发已经成为了互联网领域的最大亮点,也为搜索领域带来了新的发展机会,随着众多厂商的加盟。
桌面搜索引擎的竞争日益激烈。
目前比较流行的桌面搜索引擎有Google Desktop、百度、88Data 桌面搜索、网络猪、微软桌面搜索。
1. Google Desktop Search
Google发布了自己的桌面搜索工具:Google Desktop Search,简称为GDS。
这是一款强大的计算机硬盘搜索工具。
GDS的主要特点有:GDS会自动保留即时通讯的谈话记录,还能复制历史记录,通过GDS 可以查找自己的电子邮件、媒体文件、网页历史纪录、文档、Email等内容;拥有先进的搜索技术;不用上网就可以查看浏览过的网页;可以直接通过桌面栏进行搜索;通过快速查找项启动应用程序并立即开始搜索,还可以补充工具栏,将个性化信息集中放置;可以通过开发人员编写的插件补充工具栏。
2.百度硬盘搜索
百度硬盘搜索是世界上第一款中英文桌面搜索工具。
它可以在电脑中快速的查找信息;
还可以根据文件的类型和属性信息,自动生成目录。
百度硬盘搜索的功能特点主要有:可以通过添加高级搜索,使查找的结果更准确;可以支持语法搜索;可以给搜索结果页面增加细分目录,进一步缩小搜索范围;增加了很多小功能,方便实用;优化了搜索性能,减小了安装文件的体积;可以支持很多浏览器。
3 .88Data 桌面搜索
88Data 桌面搜索是国内也是唯一由个人独立开发的体积最小的桌面搜索工具,通过其可以快速搜索系统中的每个角落,你的电子邮件、文档、媒体文件和网页历史记录等内容将即刻显示在你面前。
88Data 桌面搜索特点:具有良好的中文支持,广泛的文件格式和浏览器支持;系统功能强大,隐私安全保护;系统设置灵活等。
4 .网络猪
网络猪是中国搜索推出新一代搜索引擎,可以使每个人拥有自己的个人信息门户.只要下载领养了网络猪就有了自己的信息平台.网络猪是一个基于搜索引擎并能整合多项功能(如:mp3点歌、视频点播下载电影、聊天、短信、天气预报、定制最新新闻等)的桌面软件。
您不需打开IE,只要输入关键词,在桌面就可以搜索信息。
网络猪的搜索框可以进行网页、新闻、网站、行业、图片、论坛、词典、等多项搜索。
网络猪的主要功能特点有:越过传统的搜索模式,可以实现划词搜索;可以订制专题新闻,设置自己的新闻中心;设有办公小秘书,为用户提供日程提醒、即时贴、常用软件快捷方式等服务;集合型聊天工具,可以将QQ、MSN和网络猪的即时通讯一起应用;设有天气预报功能。
5 .微软桌面搜索
微软MSN推出了桌面搜索软件的测试版,这个MSN搜索工具的主要功能是快速搜索计算机硬盘的文件,Windows的桌面搜索集成在MSN的工具栏里。
微软桌面搜索可以即时搜索整台电脑,查找文档、电子邮件、音乐、照片、视频等各种内容。
微软桌面搜索的主要功能特点有;拥有桌面、浏览器、资源管理器三种搜索工具栏,可以在这些工具栏中直接输入文字搜索;可以搜索在系统中已经注册的所有文件类型,也可以手动添加位置的文件类型;可以通过选项卡式浏览器提高网页浏览效率;设有弹出窗口阻止程序可以有效的阻止弹出窗口;可以在搜索结果页中突出现实搜索的文字;可以将搜索结果与系统操作高度集成,可直接对搜索结果进行系统右键菜单操作,如:重命名、复制和删除等,支持批量操作,处理搜索结果相当方便。
这些都是非常好的桌面搜索工具,受到了广大使用者的好评,但是她们也存在一些不足的地方,例如:它们都是需要安装的软件,虽然安装文件不是很大名单是需要的安装目录比较大,例如Google Desktop Search安装时要求所在分区要有1GB的剩余空间;索引文件很大,Google Desktop Search等默认对全盘进行索引,因此随着时间的增长,硬盘里的索引文件会越来越大,就会影响系统运行速度;虽然微软桌面搜索默认不进行全盘索引,只对“我的文
档”和“Documents and Settings”等常用文件夹进行索引,但是它没有给出明确的索引设置说明,增加了操作难度;除了微软的桌面搜索以外,其他的桌面搜索工具都不可对加密的PDF文件进行检索;安全性不够。
这是人们最在意的问题,由于桌面搜索引擎功能的强大,对用户的整个硬盘信息进行索引,如果个人计算机接入互联网,就存在着个人隐私暴露以及知识产权泄漏的相关问题。
因为当我们利用这些桌面搜索工具进行搜索时,搜索引擎将查询请求发送给两个不同的程序,以Google Desktop Search为例子,一个请求发送到网络,进行网页搜索;另一个将相同的查询请求发送到本地运行的桌面搜索程序,在事先建立的索引中进行查询。
另外GDS还会自动的保留用户邮箱里的电邮信息、即时通讯的谈话记录、用户的上网浏览记录,GDS还能复制历史记录,永远把它保留下来,这就意味着即使你已经将一些机密的文件删除了,通过GDS还是能将他们一一搜索出来,将所有的机密暴露无疑。
第二章桌面搜索引擎的总体设计
搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。
搜索引擎的工作原理大致可以分为:
1. 搜集信息:搜索引擎的信息搜集基本都是自动的。
搜索引擎利用称为网络蜘蛛的自动搜索机器人程序来连上每一个网页上的超连结。
机器人程序根据网页链到其他中的超链接,就象日常生活中所说的“一传十,十传百……”一样,从少数几个网页开始,连到数据库上所有到其他网页的链接。
理论上,若网页上有适当的超链结,机器人便可以遍历绝大部分网页。
2. 整理信息:搜索引擎整理信息的过程称为“建立索引”。
搜索引擎不仅要保存搜集起来的信息,还要将它们按照一定的规则进行编排。
这样,搜索引擎根本不用重新翻查它所有保存的信息而迅速找到所要的资料。
想象一下,如果信息是不按任何规则地随意堆放在搜索引擎的数据库中,那么它每次找资料都得把整个资料库完全翻查一遍,如此一来再快的计算机系统也没有用。
3. 接受查询:用户向搜索引擎发出查询,搜索引擎接受查询并向用户返回资料。
搜索引擎每时每刻都要接到来自大量用户的几乎是同时发出的查询,它按照每个用户的要求检查自己的索引,在极短时间内找到用户需要的资料,并返回给用户。
目前,搜索引擎返回主要是以网页链接的形式提供的,这些通过这些链接,用户便能到达含有自己所需资料的网页。
通常搜索引擎会在这些链接下提供一小段来自这些网页的摘要信息以帮助用户判断此网页是否含有自己需要的内容。
其实搜索引擎的工作非常简单。
我们知道蜘蛛是搜索引擎的主要劳动力,肩负着海量信息的筛选和甄别抓取工作。
蜘蛛根据网页的重要性、安全性、稳定性和代表性、新颖性、权威性和原创度、深度、广度等因素自动自动读取URL服务器的URL相关列表,按深度优先搜索方式或广度优先搜索方式抓取URL所指向的页面,对抓取的网页用唯一的id文档管理,压缩并存放到数据,待进一步处理,同时网页的所有超链接也会存入URL服务器。
搜索引擎还有一项最重要的工作就是,那就是切词和分类。
搜索引擎通过启用切词机器人和索引机器人将蜘蛛抓取的网页文档实施切词和类别分析归纳,以关键词在网页中出现的位置和频率分配权值并将切词结果导入索引数据库完成这些工作后,局部或完整更新存放抓取的数据库,当用户搜索某个关键词时,搜索引擎查询机器人将用户输入的信息进行切词处理,检索出所有包含检索词的记录,通过计算网页权重和级别对查询记录进行排序和综合运算,这样用户就可以看到最新的网页信息了。
根据客户的需要,设计的桌面搜索引擎应该保证信息的安全;保证查询速度,将查询限
制在本地文件中;保证查询结果的准确性。
保证信息安全的解决方案是将查询的文件夹限制在电脑硬盘中,不自动保留用户的即时通讯的谈话记录、用户的电邮信息、用户的上网浏览记录,不复制历史记录。
保证查询速度的解决方案是通过简历索引可以提高搜索速度,特别是当电脑硬盘空间很大,文件数量很多时。
此次设计的桌面搜索将不包含对硬盘中所有文件进行建索引的模块,但是增加了用户可以对多个文件夹进行查询的要求。
另外对用户提出多个关键字进行查询的要求,我们还提出将所有的关键字写入到一个txt文件中,当开始查询时,从用户选定的关键字文件中读取关键字。
保证查询结果准确性的解决方案是查询算法采用字符中比较算法。
有以上的要求,设计了整个桌面搜索引擎的框架,将全文分为:文件解析模块,中文分词模块,查询模块,用户界面四部分。
其中文件解析模块用于将要搜索的文件格式转换为文本文件格式。
本文可以搜索的文件格括.txt,.html,.xml,.h,.doc,.PPT,.PDF以及二进制文件等。
通过文件解析模块可以使这些不能直接由程序读取的文件变为可以直接读取的格式。
第三章 PDF文件的解析
3.1 PDF文件的简介
PDF是Adobe公司创建的用于进行全球电子文档存储与分发的一种电子文件格式。
它可以不依赖操作系统的语言和显示设备,保留原文件的包括字符、字体、版式和色彩在内的所有信息。
加之它对文字图像的高压缩,使得PDF文件的尺寸很小,非常适合网络传输、共享和打印。
PDF格式的主要特点如下:
1.高兼容性
PDF是对文字图像数据都兼容的文档格式,它独立于各种计算机平台和应用程序,PDF 文档可以使用二进制(Binary)或ASCII编码,实现跨平台作业。
2.高压缩性
PDF文件是文字、图像的压缩文档格式。
它使用多种方法来达到缩减原Postscript文档的目的,文档的存储空间很小,适合网上传输。
3.设备独立性
PDF文件具浏览不受操作系统、网络环境、应用程序版本、字体的限制。
PDF文档是为整合多种输出选项的网络所设计的,它是设备独立的最佳输出格式。
4.页面独立性
PDF文档与Postscript文档不同,PDF文档中的每一页与其它页是互不相关的,它以单页为单位。
5.可扩充性
PDF有Plug-in的接口结构,可通过Plug-in方便集成,增加新功能。
同时可使用Lotus Notes数据库建立PDF文档数据库和有效进行电子文档数据管理。
6.保护性
PDF文档允许设定密码,可以防止非法使用。
例如必须使用密码才允许阅读、打印、复制、注释或修改。
PDF文件是由一个PDF文档和其它的支持数据组成。
一个PDF文档可以包含一个或多个页面,每个页面都是由文字、图形和图像的任意组合成的。
PDF文档还可以包含一些超文本链接、声音和动画等信息。
PDF文件还包含一些PDF版本号、文件中重要结构的位置等其它信息。
3.2 PDF的逻辑结构
PDF的逻辑结构指定了基本对象类型表示PDF的文档的方式,包括:页面、注解、超文本链接、字体等。
PDF的逻辑结构反映了文件体中间接对象间的等级层次关系。
PDF的逻辑结构是一种树型结构。
文件尾包含了文件体的Catalog的地址。
Catalog是该PDF文档的根对象,根节点下有四棵子树如下:
1.页面树(Pages Tree)
所有的页面对象都是树的叶节点。
每一页包含了对该页的内容(Contents),注释(Annotations),缩略图(Thumbnail)的引用。
其中,Content stream (内容流)描述的是该页的文本内容。
2.目录树管理书签(B00kmark)
PDF文档中的Outline Tree(大纲)是一个树型层次结构。
其中每个节点都是一个书签Bookmark。
书签名(Bookmark Name)和具体的页面位置一一对应。
应用程序能够按照书签名访问文档的内容。
3.线索树(Threads Tree)
按树型结构组织文章的线索和线索下的文章块。
4.名字树(Name Tree)
建立了一个字符串和页面区域之间的关联。
一个PDF文档的层次关系如图
PDF文档层次图
3.3 PDF文件解析流程介绍
根据以上介绍,本文将PDF文件的解析过程设计如下:
1.首先查找文件尾Trailer,查找关键字“/root”,root后的值即为Catalog字典(文件的逻辑入口点)的对象号。
查找关键字“/Encrypt”,/Encrypt后的值即为加密字典的对象号,如果没有找到说明此PDF没有被加密。
2.通过Catalog根节点(标签为/Type/Catalog)找到页树节点/pages。
如果在第一步中找到关键字“/Encrypt”,则转入其加密字典处,利用MD5,RC4算法获得其加密密钥。
3.转入/pages里,查找关键字Kids,其后的对象号标志着页对象/page的位置,也有可能仍是页树节点。
4.转入到页对象/page中,查找关键字“/contents”,如果没有,则说明这是一空页。
查找关键字“/Font’’,读取其字体信息。
5.转入到/Contents里,读取stream和end stream之间的内容存放到一个数组中,如果在(2)中获得了加密密钥,则用获得的密钥对数组中的内容通过MD5和RC4算法进行解密,否则直接进行下一步。
6.读取关键字“/Filter"后的解码名,对解密后的内容流进行解码,然后进行解压缩。
PDF文件的解析过程
PDF解析流程
第四章中文分词简介
词是最小的、能独立活动的有意义的语言成分,搜索引擎通常都是以词为单位建立索引的。
在分词方面,英文和中文的区别为:英文以词为单位,词和词之间靠空格隔开,而中文的单位为字,将句子中所有的字连起来才能表达一个意思。
就要求在对中文文本进行自动分析前,先将整句切割成更小的词汇单元,即中文分词
4.1 分词算法
常用的分词算法主要有:一元分词技术、二元分词技术、基于字符串匹配的分词技术、基于理解的分词算法和基于统计的分词技术。
4.1.1一元分词技术
在中文文本中,构成词、句、段、章的基本单位是单个的汉字,它是不可分解的最小单位。
一元分词就是将标引和检索的基本单元定为单个汉字。
它有固定的长度和形式,单汉字系统可以直接用它的内码作为地址,而不需要考虑字与字之间的排序。
对于建立数据库的索引来说汉字的个数也是适中的,由于汉字的个数基本恒定,索引项的数量就大体等于常用汉字的个数。
因此一元切分检索系统具有组配灵活,适应性强,便于系统维护等优点,它的缺点是索引比较大,查询复杂,效率不高,准确率较低。
4.1.2二元分词技术
二元分词就是指将临近的两个汉字作为一个单元,对文本信息进行切分。
据统计显示,中文词汇大部分都是以两个汉字组成,因此采用二元切分所切割出来的切分单元最容易形成词汇。
二元切分技术的特点是原理简单,容易实现,不需要维护词表,并且精度比一元分词技术高。
目前二元分词技术是应用较广的分词技术,并且这种分词技术还是用于日文,韩文,因此基于二元分词技术的性价比还是很高的。
4.1.3基于字符串匹配的分词技术
基于字符串匹配的分词技术可以分为机械分词方法和特征词库法。
机械分词方法的分词原理是将预处理的汉字串按照一定的方法与机器词典中一个充分大的词条进行匹配,如果在词典中找到某个汉字串与原文中的汉字串一致,则匹配成功。
机械分词方法按照扫描的方向不同可以分为:正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。
其中最常用的为:正向最大匹配法、逆向最大匹配法、最少切分法。
①正向最大匹配法(Maximum Matching Method)
此方法简称为MM算法,其基本原理是:设词典为S,S1为待切分的字符串,Max为词典S中的最大词长。
匹配时每次按正向顺序取长度为Max的字符串与词典中的词进行匹配,如
果能成功匹配,则该字符串为一个词,指针后移Max个字符串继续匹配。
否则,字符串减一个(从字符串的最后减一个)字继续进行匹配,直到匹配成功。
②逆向最大匹配法(Reverse Maximum Matching Method)
此方法简称为RMM算法。
RMM算法的原理与MM算法类似,只是将匹配的顺序改为逆向,RMM法在切分的准确率上比MM法有很大提高,使用逆向最大匹配的错误率为1/245,而正向最大匹配的错误率为1/169。
③最少切分
此算法的基本思想是切分时使每一个句子的词最少,理由是使用最少切分的分词准确度比较高。
然而该算法不能识别组合歧义,并且时间复杂度高。
特征词库法的基本思想是:事先建立一个特征词库,其中包含各种具有切分特征的词。
对给定的待分词的汉字串S1,首先根据特征词库将S1分割成若干个较短的子串,然后对每个子串分别采用机械匹配法进行切分。
实际上这是一种“分而治之”的办法。
由于每个子串都比S1短,所以切分速度较快。
4.1.4基于理解的分词方法
该分词方法的原理是通过让计算机模拟人对句子的理解,以达到识别词的效果。
算法的基本思想是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。
这种分词系统一般包括:分词子系统、句法语义子系统和总控部分。
整个系统在总控部分的协调下,由分词子系统获得有关的词和句子等的句法和语义信息。
由于汉语是一门笼统、复杂性的语言,电脑难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。
基于理解的分词方法大概有约束矩阵法、语法分析法和理解切分法三种方法。
4.1.5基于统计的分词方法
由于词是由字组合成的,因此在上下文中几个字相邻出现频率越高,它们可构成一个词的可能性就越大,于是相邻的字共同出现的频率可以反映构成词的可信度。
可以对资料中相邻共现的各个字的组合的频度进行统计,计算它们共同出现的信息。
当几个字同时出现的频率高于某个值时,便可认为这些字可能构成了一个词。
基于统计的分词方法不需要切分词典,只需计算汉字间共同出现的概率,因而又被称为无词典分词法或统计取词方法。
但基于统计的分词方法也有一定的局限性,例如经常会抽出一些共现频度高、但并不是词的常用字组,并且对常用词的识别精度差,时空开销大。
在实际应用中基于统计的分词方法都要有一部基本的分词词典以进行串匹配分词。
4.2 中文分词的应用
由于汉语自己的特点,很多西文的处理方法中文不能直接采用,因此中文必须要经过分词的处理过程。
中文分词是其他中文信息处理的基础,主要应用于信息检索、人机交互、信息提取、文本挖掘、中外文对译、中文校对、自动摘要、自动分类等很多方面。
中文分词是搜索引擎的重要部分,其准确性和速度对搜索引擎非常重要,因为如果分词速度太慢,即使。