论文部分内容阅读
摘 要: 研究与实现一款新型的桌面搜索引擎。该引擎是在Lucene的基础上进行实现的。不仅实现对全盘文件信息的搜索,也进一步实现对全盘普通文件的全文解析与搜索。
关键词: 桌面搜索引擎;中文分词;倒排索引;查询推荐
0 引言
桌面搜索引擎也称为个人桌面引擎或个人硬盘搜索引擎,是对个人电脑上存储的信息进行索引、查找的检索工具。
桌面搜索的发展已经成为了互联网领域的最大亮点之一,同时它也为搜索引擎领域带来了新的发展机会。随着众多厂商的加盟,桌面搜索引擎的竞争日趋激烈。目前市场上主流的桌面搜索引擎有以下几种:Google Desktop Search、百度硬盘、MSN搜索工具和中搜的网络猪等。
本文在对原有桌面搜索引擎的学习和了解之后,研究与开发了一款新型的桌面搜索引擎,实现了查询推荐和即敲即得式搜索,能够针对多关键词搜索等功能。
1 主要工作
本文主要研究了新型桌面搜索引擎的原理和基本方法,并基于此实现一款新型的桌面搜索引擎。具体如下:
1)研究Lucene的索引机制和搜索原理;
2)学习和了解中文分词的算法和原理;
3)使用多线程技术和内存缓冲等优化系统性能;
4)实现普通文档格式的解析、索引和搜索以扩大搜索范围;
5)基于Trie检索树实现搜索时的关键词查询推荐;
6)基于Lucene实现一款新型的桌面搜索引擎。
根据以上所述使用开源检索框架Lucene实现了一个体积轻便、索引快速、界面友好的桌面搜索引擎。经过实例测试,系统达到了较为满意的性能,能够高效、快速的提供搜索结果。
2 基于Trie检索树实现查询推荐
本系统基于Trie检索树实现了查询推荐。由于汉字本身的固有复杂性,创建中文Trie树的时候是系统遇到的一个复杂点。经过反复对比和测试,系统使用Trie树结点存储汉字的拼音,尾结点存储漢字来实现汉字的存储。
2.1 中文Trie树建立
根据汉字的拼音创建Trie树的思想是使用结点存储汉字拼音,这样的好处是可以将中文和英文合并建立Trie树,并且每个结点最多有27个儿子结点。其复杂之处是处理同音的词语。
下面以词语“实际”和“世纪”为例,演示插入中文的过程,如表1所示。
2.2 提取系统关键词成词库
系统词库来源于系统,通过在系统进行中文分词时截取由分词器所分的关键词获取。本文采用修改Lucene源码(TermIn
ForsWriter函数)来截获关键词。
此外,为了保证关键词的质量,还对关键词进行过滤和筛选:
3 Lucene索引机制和多关键词查询的实现
倒排索引不同于以往的索引结构,它源于实际应用中需要根据属性的值来查找记录。倒排索引的每一项为一个属性值和具有该属性值的该记录的地址。
如下面的例子就是对文章1和2进行创建倒排索引的过程:
文件1:当幸福来敲门.rmvb
文件2:幸福在你心间.pdf
表2为对上述文章所创建的倒排索引表:
Lucene是一个开源的检索工具,其索引机制为倒排索引,使用倒排索引可以在搜索的时候根据关键词很快的获得含有该关键词的所有文件名称。在本系统中使用倒排索引,在搜索的时候能够在1秒的时间范围内获得搜索结果。
为了提高搜索精度,本系统还提出了多关键词搜索的功能。系统搜索接口使用Lucene搜索API:IndexSearcher。使用QueryParser实现了多关键词查询:在构造搜索时,设置QueryParser对象的默认操作属性为QueryParser.AND_OPERATOR,通过此设置,对用户输入内容进行“与”操作,实现多关键词搜索。
4 系统实现与优化
系统可以分为两个部分:前端和后端。前段为用户的可视部分,负责用户的查询和结果显示;后端负责磁盘文件的扫描、文件的解析和索引的写入、查询推荐的实现等。
4.1 系统性能优化
此外还着重提高了系统的性能,以提高用户体验度,系统主要从以下几个方面对系统进行优化:
1)线程查看:使用线程实时判断文件信息的是否写入完成,以便及时进行解析和创建索引;
2)多线程索引:多线程来提高索引速度;
3)内存创建索引:索引创建放在内存提高索引速度;
4)索引优化:使用索引更新和删除优化索引;
5)系统命令获取文件信息以加快文件获取速度。
对系统的优化,主要是提高系统的性能和索引速度,能够对系统磁盘文件很快的建立索引文档,从而很快的获取搜索结果。通过对使用多线程和内存缓冲技术,使得系统的解析和索引时间70多分钟降到15分钟左右,极大的缩短了索引创建时间。
4.2 系统界面优化
在专注系统性能的同时,系统还实现了友好的界面,以提高用户使用时的舒适度,系统界面简洁大方、简单易用、小巧方便。具体来说有以下几点特色:
1)界面动态变化:界面根据搜索结果的获得动态伸展;
2)界面简洁大方:各个控件布局清晰明了、简单易用;
3)实现换肤功能:用户可以根据自己的喜好进行换肤;
4)点击直接打开文件:对于搜索到的文件,可以双击直接打开或者右键选择打开所在目录和文件;
5)实现分类搜索:按照内容和标题进行搜索。
5 小结
本文基于开源的检索框架Lucene,实现了一款新型的桌面搜索引擎。能够在用户输入查询词的时候及时捕捉输入词内容
关键词: 桌面搜索引擎;中文分词;倒排索引;查询推荐
0 引言
桌面搜索引擎也称为个人桌面引擎或个人硬盘搜索引擎,是对个人电脑上存储的信息进行索引、查找的检索工具。
桌面搜索的发展已经成为了互联网领域的最大亮点之一,同时它也为搜索引擎领域带来了新的发展机会。随着众多厂商的加盟,桌面搜索引擎的竞争日趋激烈。目前市场上主流的桌面搜索引擎有以下几种:Google Desktop Search、百度硬盘、MSN搜索工具和中搜的网络猪等。
本文在对原有桌面搜索引擎的学习和了解之后,研究与开发了一款新型的桌面搜索引擎,实现了查询推荐和即敲即得式搜索,能够针对多关键词搜索等功能。
1 主要工作
本文主要研究了新型桌面搜索引擎的原理和基本方法,并基于此实现一款新型的桌面搜索引擎。具体如下:
1)研究Lucene的索引机制和搜索原理;
2)学习和了解中文分词的算法和原理;
3)使用多线程技术和内存缓冲等优化系统性能;
4)实现普通文档格式的解析、索引和搜索以扩大搜索范围;
5)基于Trie检索树实现搜索时的关键词查询推荐;
6)基于Lucene实现一款新型的桌面搜索引擎。
根据以上所述使用开源检索框架Lucene实现了一个体积轻便、索引快速、界面友好的桌面搜索引擎。经过实例测试,系统达到了较为满意的性能,能够高效、快速的提供搜索结果。
2 基于Trie检索树实现查询推荐
本系统基于Trie检索树实现了查询推荐。由于汉字本身的固有复杂性,创建中文Trie树的时候是系统遇到的一个复杂点。经过反复对比和测试,系统使用Trie树结点存储汉字的拼音,尾结点存储漢字来实现汉字的存储。
2.1 中文Trie树建立
根据汉字的拼音创建Trie树的思想是使用结点存储汉字拼音,这样的好处是可以将中文和英文合并建立Trie树,并且每个结点最多有27个儿子结点。其复杂之处是处理同音的词语。
下面以词语“实际”和“世纪”为例,演示插入中文的过程,如表1所示。
2.2 提取系统关键词成词库
系统词库来源于系统,通过在系统进行中文分词时截取由分词器所分的关键词获取。本文采用修改Lucene源码(TermIn
ForsWriter函数)来截获关键词。
此外,为了保证关键词的质量,还对关键词进行过滤和筛选:
3 Lucene索引机制和多关键词查询的实现
倒排索引不同于以往的索引结构,它源于实际应用中需要根据属性的值来查找记录。倒排索引的每一项为一个属性值和具有该属性值的该记录的地址。
如下面的例子就是对文章1和2进行创建倒排索引的过程:
文件1:当幸福来敲门.rmvb
文件2:幸福在你心间.pdf
表2为对上述文章所创建的倒排索引表:
Lucene是一个开源的检索工具,其索引机制为倒排索引,使用倒排索引可以在搜索的时候根据关键词很快的获得含有该关键词的所有文件名称。在本系统中使用倒排索引,在搜索的时候能够在1秒的时间范围内获得搜索结果。
为了提高搜索精度,本系统还提出了多关键词搜索的功能。系统搜索接口使用Lucene搜索API:IndexSearcher。使用QueryParser实现了多关键词查询:在构造搜索时,设置QueryParser对象的默认操作属性为QueryParser.AND_OPERATOR,通过此设置,对用户输入内容进行“与”操作,实现多关键词搜索。
4 系统实现与优化
系统可以分为两个部分:前端和后端。前段为用户的可视部分,负责用户的查询和结果显示;后端负责磁盘文件的扫描、文件的解析和索引的写入、查询推荐的实现等。
4.1 系统性能优化
此外还着重提高了系统的性能,以提高用户体验度,系统主要从以下几个方面对系统进行优化:
1)线程查看:使用线程实时判断文件信息的是否写入完成,以便及时进行解析和创建索引;
2)多线程索引:多线程来提高索引速度;
3)内存创建索引:索引创建放在内存提高索引速度;
4)索引优化:使用索引更新和删除优化索引;
5)系统命令获取文件信息以加快文件获取速度。
对系统的优化,主要是提高系统的性能和索引速度,能够对系统磁盘文件很快的建立索引文档,从而很快的获取搜索结果。通过对使用多线程和内存缓冲技术,使得系统的解析和索引时间70多分钟降到15分钟左右,极大的缩短了索引创建时间。
4.2 系统界面优化
在专注系统性能的同时,系统还实现了友好的界面,以提高用户使用时的舒适度,系统界面简洁大方、简单易用、小巧方便。具体来说有以下几点特色:
1)界面动态变化:界面根据搜索结果的获得动态伸展;
2)界面简洁大方:各个控件布局清晰明了、简单易用;
3)实现换肤功能:用户可以根据自己的喜好进行换肤;
4)点击直接打开文件:对于搜索到的文件,可以双击直接打开或者右键选择打开所在目录和文件;
5)实现分类搜索:按照内容和标题进行搜索。
5 小结
本文基于开源的检索框架Lucene,实现了一款新型的桌面搜索引擎。能够在用户输入查询词的时候及时捕捉输入词内容