首页 > 范文大全 > 正文

桌面搜索引擎设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇桌面搜索引擎设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:针对目前主流桌面搜索引擎用户体验不好,索引实时性不高,系统资源占用率过高,查全率不高等缺点。该文设计出一款短小精悍,功能强大,性能卓越,界面友好的桌面搜索引擎。支持检索结果再检索,同时保证系统运行时cpu、内存和磁盘等较低的系统资源消耗。采用三种索引机制保证索引的实时性和系统的查全率。

关键词:桌面搜索引擎;系统资源占用率;查全率;友好界面

中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)20-4949-03

Design of a Desktop Search Engine

LI Xiao-xin

(Department of Mathematics, Shaanxi Education College, Xi'an 710061, China)

Abstract: Currently the main desktop search engines lack the good user experience, and they can not build index instantly, and they have high resources occupation rate. So the thesis designs a smart, powerful and fast desktop search engine that has the better user experience. It supports the function of re-retrival of search results. Apart from this, it has low resources occupation rate, including cpu, memory and disk.And the thesis designs three types of indexes that ensure the real-time and recall ratio of the desktop search engine.

Key words: desktop search engines; resources occupation rate; recall ratio; friendly interface

信息爆炸的时代,人类的记忆能力在不断的接受着挑战,搜索成了替代记忆需求的行之有效的方法,所以搜索引擎应势而生。随着硬盘容量的增大,用户本地文件系统目录结构越来越复杂,文件数量越来越庞大,用户对本地文件快速搜索的需要也越来越迫切,桌面搜索成了搜索领域的关注点,桌面搜索的竞争也成为各大搜索引擎公司竞争的焦点。Windows自带的搜索功能搜索速度很慢,在全盘中搜索某个文件需要花费十几分钟的时间(在Windows7和vista中有所改进),而用户的等待耐心是有限的,所以需要一款能提供高速搜索硬盘文件的软件,来满足用户快速查询的需求。当前,各大搜索公司都开发了自己的桌面搜索引擎,但从用户体验、索引实时性和系统资源占用率上来说,都有很大的欠缺。所以开发一款实时性高,用户体验好,且占用系统资源低的桌面搜索引擎成了大势所趋,而且桌面搜索比web搜索更靠近用户,用户粘度更大,所以如果能借助腾讯这个大平台来做这件事,我想应该会赢得广大用户的欢迎和认可。

1 相关产品

Windows下已有几款比较成熟的桌面搜索软件。这些软件按其主流功能分为两类:对文件属性信息的搜索和对文本文件内容的搜索。对文件属性信息的搜索软件主要有File finder、Ava、Locate;对文本文件内容索引的软件主要有Google桌面搜索、百度硬盘搜索、微软桌面搜索、中搜网络猪等。

1)Google桌面搜索Google公司开发,主页为/;主要对各种文本文件内容索引和检索,能够对各种格式文件进行解析,能够搜索邮件和即时消息,目前拥有较大用户群。主要缺点是索引过程可能需要几个小时,索引文件一般占用几百兆到几吉硬盘空间,搜索时需要开启专门服务器,占用资源较大,以网页形式给出搜索结果,不适合与普通电脑用户。

2)百度硬盘搜索:百度公司开发,主页为,在国内亦拥有较大用户群,实现方式和使用界面均与google桌面搜索类似。

3)微软桌面搜索:微软公司开发,主页为,微软桌面搜索是一款针对电子邮件、Office文档、MP3、图片、联系人等信息的搜索软件。

4)网络猪:由中搜公司开发,主页为/,搜索本地文档和邮件。

以上几款大型桌面搜索软件缺点是建立索引需要时间长,更新索引速度慢,索引实时性不高,硬盘等系统资源占用率高。例如用户群最大的Google桌面搜索,建立一次索引一般需要几个小时,在我本机上的索引时间大约20个小时,索引文件达到2G,需要时刻开启一个桌面搜索服务器,即时用户不进行搜索也需要耗费15M左右内存。

2 系统总控模块

当用户启动系统之后,系统首先检查索引状态,包括三种:索引完整,索引不完整,没有索引,并提示给用户,当索引不完整或没有索引时,用户需要先使用批量索引功能建立索引,如果索引完整,用户可以选择查询,或重新建立索引,或建立增量索引,增量索引的意思就是在原有索引的基础之上增量建立索引,而非覆盖原有索引。用户在查询时,可以选择两种查询方式,一种是基于文件名关键字的查询,一种是基于文件内容的查询,系统针对这两种查询分别采取两种完全不同的索引查询方式,详细过程稍后会讲,同时用户可以对查询文件通过属性信息过滤,比如通过文件大小,修改时间,文件类型等属性信息过滤,精确地定位用户需求。

当系统启动之后,除了响应用户的请求之外,系统还并行执行其他两个任务,一个是实时索引,一个是慢索引。执行这两个任务的目的是为了保证索引的实时性。实时索引实时捕获系统的文件操作,并建立动态数据结构索引,而慢索引则通过条件触发方式执行,触发慢索引的条件包括三种:1)到达系统预设的索引更新时间;2)实时索引中新增文件或目录达到预设最大值;3)实时索引中标记删除文件或目录达到预设最大值。三种触发条件保证了索引的实时性,同时也保证了系统的较低的内存使用率。

查询数据显示给用户,可以采用基于文件大小,修改时间等属性的再排序操作,同时还通过用户在结果中二次查询操作,精确定位用户查询目的,满足用户快速查询需求。

3 磁盘扫描模块

磁盘扫描模块针对快索引(批量索引、增量索引)和慢索引采用不同的扫描处理机制,使快索引能高速扫描,并保证慢索引极低的系统资源占用率。

批量快索引采用多线程并行磁盘扫描方式,针对每个需要扫描建立索引的目录分别开启一个线程去扫描。扫描的过程我们采用栈来模拟递归,解决了递归函数深度调用带来的时间和系统资源等耗费,提高了扫描速度。

增量快索引同样采用多线程并行磁盘扫描方式,但在扫描过程中需要处理目录重叠问题,避免了重复的磁盘扫描。所谓增量就是在原先索引的基础上新添目录索引,假设用户需要增量索引的目录集合为A,原先已经扫描索引的目录集合为B,则增量快索引在扫描磁盘时只需要扫描A-B(A与B的差集)目录集合中的目录。避免了重复扫描,加快了扫描速度。

慢索引是一种隐式索引方式,是系统的一种索引更新方式,在用户察觉不到的情况下进行的,所以要求cpu,内存等系统资源占用率极低,因此在扫描硬盘时我们采用单线程的方式来尽量的减少系统资源的占用率。

4 索引模块

系统使用了三种索引模式:快索引、慢索引、实时索引,其中快索引又分为批量索引和增量索引。其中快索引是一种显式手动索引方法,慢索引和实时索引是一种隐式自动索引方法。

快索引和慢索引采用倒排文件的索引方法,处理过程包括分词,建立倒排文件,除了对文件或目录名建立倒排索引之外,为了加速基于内容的查询,我们还对扩展名建立了倒排索引,并采用红黑树结构对扩展名进行编号,实现快速编号且节约了存储空间。索引的内部数据采用gbk编码,对utf-8等其他编码进行了编码转换,节约了存储空间。倒排索引链表的存储采用游程编码和字节对齐的压缩存储方法,即节约了硬盘空间,又减少了磁盘I/O时间。倒排索引词典的建立采用完美哈希的方法,达到O(1)时间复杂度的快速查找定位,并且只占用大约64KB左右的磁盘空间。

分词过程采用n-gram语言模型,使用1-gram和2-gram相结合的分词策略,分别对中文、英文分词,保证了系统的查全率和查准率。

实时索引并非倒排文件形式,而是采用了两种动态数据结构配合存储,包括:红黑树数据结构和Bloom filter哈希表结构,两种数据结构配合操作,实现了对添加文件或目录、删除文件或目录、重命名文件或目录、移动文件或目录等文件操作的的快速实时索引。

5 查询模块

通过数据分析对比发现,用户桌面查询需求主要集中在对文件属性信息的查询上,用户很少使用基于内容的查询服务,基本上符合2-8原则,所以针对文件属性和内容两种不同的查询需求,系统设计了两套索引查询方法,既保证了常用文件属性的查询操作的速度,又极大减少了磁盘等系统资源的占用率,同时,内容查询采用基于自动机理论的高效多模式串匹配算法,在一定程度上保证了内容查询的速度。

基于文件属性的查询,我们采用预先建立倒排索引的方法(快索引,慢索引和实时索引),查询过程从倒排索引文件和实时索引动态数据结构中提取数据,排序处理并返回给用户。

基于内容的查询,首先在扩展名倒排索引文件中提取出文本文件,然后对文本文件进行格式解析,抽取纯文本内容,然后通过AC-BM多模式串匹配算法进行关键词匹配,最后将包含用户查询关键词的文本文件返回给用户,同时这个过程采用并行处理技术,进一步提高了速度。

6 结果显示模块

结果显示采用与资源管理器无缝结合,搜索结果文件或目录可以直接操作,支持在结果中查找,如果搜索结果过多,可以进一步过滤;同时支持各种排序显示,比如按文件大小,修改时间等显示;除此之外显示模块支持分类显示,可以将结果按文件格式分类显示,方便用户查找。

7 结束语

本论文设计的桌面搜索引擎是一款短小精悍,功能强大,性能卓越,界面友好的桌面搜索引擎。主要解决了目前主流桌面搜索引擎的一些缺点,如用户体验不好,索引实时性不高,查全率不高,索引和索引更新时间过长,系统资源占用率过高等缺点。功能方面,本桌面搜索引擎支持多关键词检索、通配符检索、精确检索、复合检索、文件类型检索以及检索结果的再检索,同时系统采用倒排索引和基于自动机理论的多模式串算法保证了系统的检索速度。针对文件属性和文件内容两种查询需求,设计了两套完全不同的索引检索机制,保证系统运行时cpu、内存和磁盘等较低的系统资源消耗。采用手动显式索引和自动隐式索引来满足用户不同的索引需求,同时系统内部使用三种索引机制:快索引(又包括批量索引和增量索引),慢索引和实时索引,来保证索引的实时性和系统的查全率,对索引文件采用游程编码和字节对齐压缩存储,进一步减少了磁盘占用率,同时提高了I/O磁盘操作速度。系统采用n-gram语言模型,设计了1-gram和2-gram相结合的分词算法,保证了系统的查全率和查准率。系统界面使用窗口界面,而非web界面,可以与资源管理器无缝结合,支持对搜索结果的二次查询,分类显示,排序显示,支持对搜索结果文件的直接编辑操作,方便了用户的使用。

参考文献:

[1] 丛磊.桌面搜索引擎的研究与实现[D].北京:北京化工大学,2006.

[2] 李伟超.桌面搜索引擎评析[J].现代情报,2007,27(12): 211-214.

[3] 孟美华.桌面搜索引擎的设计与实现[D].大连:大连理工大学,2009.

[4] 任树怀,卢志国.基于Google桌面搜索开发站内全文搜索引擎[J]. 图书情报工作,2005,49(11):88-90.

[5] 李子臣.搜索技术的现状及发展前景[J]. 情报科学,2006,24(3): 468-474.

[6] 张卫丰,徐宝文.Web搜索引擎框架研究[J].计算机研究与发展,2000,37(3):376-378.

[7] 张卫丰,徐宝文.Web搜索引擎框架研究[J].计算机研究与发展,2000,37(3):376-378.

[8]郭立力,赵春江.高效FTP搜索引擎的设计与实现[J].华南理工大学学报,2009,37(1):135-139.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文