《硅谷》杂志:新型桌面搜索关键技术的研究与实现 |
2013-01-19 11:31 作者:www.guigu.org 来源:硅谷网-《硅谷》杂志 HV: 编辑: 【搜索试试】
|
|
据《硅谷》杂志2012年第21期刊文称,研究与实现一款新型的桌面搜索引擎。该引擎是在Lucene的基础上进行实现的。不仅实现对全盘文件信息的搜索,也进一步实现对全盘普通文件的全文解析与搜索。
关键词:桌面搜索引擎;中文分词;倒排索引;查询推荐
0引言
桌面搜索引擎也称为个人桌面引擎或个人硬盘搜索引擎,是对个人电脑上存储的信息进行索引、查找的检索工具。
桌面搜索的发展已经成为了互联网领域的最大亮点之一,同时它也为搜索引擎领域带来了新的发展机会。随着众多厂商的加盟,桌面搜索引擎的竞争日趋激烈。目前市场上主流的桌面搜索引擎有以下几种:GoogleDesktopSearch、百度硬盘、MSN搜索工具和中搜的网络猪等。
本文在对原有桌面搜索引擎的学习和了解之后,研究与开发了一款新型的桌面搜索引擎,实现了查询推荐和即敲即得式搜索,能够针对多关键词搜索等功能。
1主要工作
本文主要研究了新型桌面搜索引擎的原理和基本方法,并基于此实现一款新型的桌面搜索引擎。具体如下:
1)研究Lucene的索引机制和搜索原理;
2)学习和了解中文分词的算法和原理;
3)使用多线程技术和内存缓冲等优化系统性能;
4)实现普通文档格式的解析、索引和搜索以扩大搜索范围;
5)基于Trie检索树实现搜索时的关键词查询推荐;
6)基于Lucene实现一款新型的桌面搜索引擎。
根据以上所述使用开源检索框架Lucene实现了一个体积轻便、索引快速、界面友好的桌面搜索引擎。经过实例测试,系统达到了较为满意的性能,能够高效、快速的提供搜索结果。
2基于Trie检索树实现查询推荐
本系统基于Trie检索树实现了查询推荐。由于汉字本身的固有复杂性,创建中文Trie树的时候是系统遇到的一个复杂点。经过反复对比和测试,系统使用Trie树结点存储汉字的拼音,尾结点存储汉字来实现汉字的存储。
2.1中文Trie树建立
根据汉字的拼音创建Trie树的思想是使用结点存储汉字拼音,这样的好处是可以将中文和英文合并建立Trie树,并且每个结点最多有27个儿子结点。其复杂之处是处理同音的词语。
下面以词语“实际”和“世纪”为例,演示插入中文的过程,如表1所示。
表1使用汉字拼音创建中文Trie树
待插入词语:实际转换拼音:shiji
当前结点 待插入字母的结点 是否含有该结点 行为
Root s NO 插入S结点,当前结点为S
s h NO 插入h结点,当前结点为h
h i NO 插入i结点,当前结点为i
i j NO 插入j结点,当前结点为j
j i NO 插入i结点,当前结点为i
I __ __ 初始化Arraylist,存储“实际”
待插入词语:世纪转换拼音:shiji
当前结点 待插入字母的结点 是否含有该结点 行为
Root s YES 替换当前结点为S
s h YES 替换当前结点为h
h i YES 替换当前结点为i
i j YES 替换当前结点为j
j i YES 替换当前结点为i
i __ __ 存储“世纪”到Arraylist
以实际和世纪为例经过上面对“实际”和“世纪”的插入的Trie树为:
图1插入同音词的Trie树:以“实际”和“世纪”为例
关于创建Trie树的代码实现如图2所示:
图2本文实现的创建Trie树时插入中文的部分代码
2.2提取系统关键词成词库
系统词库来源于系统,通过在系统进行中文分词时截取由分词器所分的关键词获取。本文采用修改Lucene源码(TermInforsWriter函数)来截获关键词。
此外,为了保证关键词的质量,还对关键词进行过滤和筛选:
图3筛选和过滤关键词
图4为查询推荐的示例图:
图4系统查询推荐图
3Lucene索引机制和多关键词查询的实现
倒排索引不同于以往的索引结构,它源于实际应用中需要根据属性的值来查找记录。倒排索引的每一项为一个属性值和具有该属性值的该记录的地址。
如下面的例子就是对文章1和2进行创建倒排索引的过程:
文件1:当幸福来敲门.rmvb
文件2:幸福在你心间.pdf
表2为对上述文章所创建的倒排索引表:
表2倒排索引表
KeyWord 所在文章 出现次数 KeyWord 所在文章 出现次数
幸福 当幸福来敲门.rmvb[幸福在你心间.pdf] 1,1 敲门 当幸福来敲门.rmvb 1
心间 幸福在你心间.pdf 1 rmvb 当幸福来敲门.rmvb 1
pdf 幸福在你心间.pdf 1 __ __ __
Lucene是一个开源的检索工具,其索引机制为倒排索引,使用倒排索引可以在搜索的时候根据关键词很快的获得含有该关键词的所有文件名称。在本系统中使用倒排索引,在搜索的时候能够在1秒的时间范围内获得搜索结果。
为了提高搜索精度,本系统还提出了多关键词搜索的功能。系统搜索接口使用Lucene搜索API:IndexSearcher。使用QueryParser实现了多关键词查询:在构造搜索时,设置QueryParser对象的默认操作属性为QueryParser.AND_OPERATOR,通过此设置,对用户输入内容进行“与”操作,实现多关键词搜索。
图5为系统多关键词查询的结果图:
图5多关键词搜索
4系统实现与优化
系统可以分为两个部分:前端和后端。前段为用户的可视部分,负责用户的查询和结果显示;后端负责磁盘文件的扫描、文件的解析和索引的写入、查询推荐的实现等。
图6为桌面搜索引擎系统结构:
图6系统结构图
4.1系统性能优化
此外还着重提高了系统的性能,以提高用户体验度,系统主要从以下几个方面对系统进行优化:
1)线程查看:使用线程实时判断文件信息的是否写入完成,以便及时进行解析和创建索引;
2)多线程索引:多线程来提高索引速度;
3)内存创建索引:索引创建放在内存提高索引速度;
4)索引优化:使用索引更新和删除优化索引;
5)系统命令获取文件信息以加快文件获取速度。
对系统的优化,主要是提高系统的性能和索引速度,能够对系统磁盘文件很快的建立索引文档,从而很快的获取搜索结果。通过对使用多线程和内存缓冲技术,使得系统的解析和索引时间70多分钟降到15分钟左右,极大的缩短了索引创建时间。
4.2系统界面优化
在专注系统性能的同时,系统还实现了友好的界面,以提高用户使用时的舒适度,系统界面简洁大方、简单易用、小巧方便。具体来说有以下几点特色:
1)界面动态变化:界面根据搜索结果的获得动态伸展;
2)界面简洁大方:各个控件布局清晰明了、简单易用;
3)实现换肤功能:用户可以根据自己的喜好进行换肤;
4)点击直接打开文件:对于搜索到的文件,可以双击直接打开或者右键选择打开所在目录和文件;
5)实现分类搜索:按照内容和标题进行搜索。
5小结
本文基于开源的检索框架Lucene,实现了一款新型的桌面搜索引擎。能够在用户输入查询词的时候及时捕捉输入词内容,从而获取搜索结果;此外系统还实现查询推荐(QuerySuggestion)的功能,使得用户可以更好的选择查询关键词,更准确的获得搜索结果。此外系统还实现了全文搜索,可以扩大搜索范围;另外还可以根据内容和标题进行双重搜索,这样能够更加准确的定位搜索结果。 |
|
|
|
【对“《硅谷》杂志:新型桌面搜索关键技术的研究与实现”发布评论】 |
版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
|
|
|
|