摘要:根据Lucene的全文检索开源项目基础上,选用PaodingAnalyzer中文分词器,规划了一个根据中文环境的高效分词与全文查找引擎体系,完成多种类型文件内容的文本全文检索功用。
要害词:全文查找;中文分词;查找引擎;Lucene
中图分类号:TP311文献标识码:A文章编号:1009-3044(2015)13-0236-02
Abstract:ThispaperdesignandimplementanefficientChinesesegmentationsearchenginebasedonLuceneandPaodingAnalyzer,whichmainlyfordealingwithChinesewordstoimprovetheabilityoffulltextsearchsystem.
Keywords:fulltextsearch;chinesesegmentation;searchengine;lucene
根据要害字的文本查找是信息体系最重要最常用的功用之一,而开放源代码的Lucene全文检索技能是信息检索范畴广泛运用的根本技能,被大量的集成到各种体系软件以及构建Web运用体系中去,作为软件的全文检索子体系的中心。根据要害字的文本查找首要要处理分词问题,尽管Lucene内置了分词器功用,但无法支撑杂乱的中文分词。因而,本文在比较各类中文分词器的基础上,选用PaodingAnalyzer分词器替代Lucene内置分词器,与Lucene共同构建起一个中文环境下高效、准确的全文查找引擎体系。
1要害技能
1.1Lucene
Lucene是apache软件基金会jakarta项目组下的一个子项目,是一个开放源代码的全文检索引擎东西包[1]。作为一个开放源代码项目,Lucene发布后,引发了开放源代码社区的火热反应,开发者不只运用它构建详细的全文检索运用,并且将Lucene整合到各种体系软件以及各种Web运用中,乃至也有商业软件也选用Lucene作为其全文检索子体系的中心。
选用Lucene构建全文查找引擎不只在于其开源、免费,并且在于高功能、纯JAVA跨渠道运用,方便移植可重用;Lucene作为一个全文检索引擎,其杰出的技能运用优势是不只在传统全文检索引擎的倒排索引的基础上,完成了分块索引,并且规划了独立于言语和文件格局的文本剖析接口;还完成了一套强大的查询引擎,用户无需自己编写代码即可使体系可获得强大的查询能力。
1.2PaodingAnalyzer中文分词器
当前根据Lucene的中文分词器主要有PaodingAnalyzer、imdict、mmseg4j、ik等四种。从是否支撑用户自定义词库、运行速度、算法与代码杂乱度、开发者与开发社区活跃度等方面综合剖析权衡,本体系终究选用PaodingAnalyzer分词器来完成中文分词功用。
PaodingAnalyzer中文分词器,又称庖丁解牛中文切词器2[2]。PaodingAnalyzer根据Java的开源中文分词组件,供给lucene和solr接口,具有极高功率和高扩展性。它选用根据不约束个数的词典文件对文章进行有用切分,支撑最大/最小切词。字典灵敏且文件个数不限、称号不限、只要契合以dic作为扩展名的文件均视为字典。可以根据需要加减字典目录以及目录下的字典。
2体系规划与完成
在本查找引擎体系中,选用根据Lucene全文检索引擎开源项目为体系开发中心,并整合PaodingAnalyzer中文分词器以处理Lucene中不支撑中文分词问题,体系由三大模块组成:文件索引模块、查找查询模块与查找成果排序与显现模块。
体系的作业流程是,首要对通过爬虫等办法搜集起来的一切文档树立索引;其次是规划开发查询剖析器对用户查询恳求进行分词与匹配查找;最终把查找成果通过排序算法与要害字高亮显现等方式反应到查询客户端。各模块作业原理与相互协作流程体系全体结构图如图1所示:
2.1文件索引
体系中待索引文件可用网络爬虫,手艺等方式搜集,文件格局可以为html、doc、ppt、xls、pdf、txt等文档。在树立文件索引前首要有必要通过文件格局转化器对特定的文件格局选用相对应的解说类对文档进行格局转化与清洗,如PDF格局文件通过PDFBox类解说,Word和Excel通过POI类解析,并终究将文档内容转化成字节省。树立索引之前有必要进行中文分词,PaodingAnalyzer中文分词器对通过格局转化器生成的字节省进行中文分词处理。最终通过索引创立器中Lucene索引类中IndexWriter办法对一切文档树立索引并对索引进行存储,在索引结束时运用Lucene的wirter.optimize()办法优化索引。索引创立进程如图1中的体系作业流程图所示。
2.2查找查询
在客户端输入查询要害字后,首要运用中文分词器接收传递过来的查询数据,进行合理的中文分词处理,再运用切割的要害字查询查找索引,查找到对应的要害字以及相关的文件,最终将成果反应回客户端。
Lucene中IndexSeacher类是查找操作的进口,一切查找操作都是通过IndexSeacher实例运用一个重载的search办法来完成。详细的Query子类为每一种特定类型的查询进行逻辑上的封装。Query实例被传递到IndexSearcher的search办法中。QueryParser将用户输入的查询表达式处理为一个详细的Query对象。
2.3查找成果处理
通过要害字查找,获取文档的URL,并运用文件体系解析到成果界面。Lucene的默许查找成果排序是依照文档的得分进行排序的。当检索成果集中有两个文档具有相同的得分时,默许依照文档的ID对成果进行排序。还可以运用Sort排序东西完成个性化排序,办法如下:Lucene在查询的时候,可以通过以一个Sort作为参数结构一个检索器IndexSearcher,在结构Sort的时候,指定排序规矩。
Lucene查找成果分页,与读取数据库表的分页类似,每次仅取出前10条记录,这样避免了内存溢出的可能,可是每次查找都要进行一次IO操作,如果大并发访问的情况下,对服务器硬盘的转速与处理器的频率功能要求较高。
在查找成果页面中,还运用要害字加粗高亮显现。在org.apache.Lucene.search.highlight包中供给了关于高亮显现检索要害字的东西。
3体系测验
选择html、doc、pdf、txt四种类型文档各10份,每份文档文本包括“核算机科学技能”相关内容,首要对文档进行中文分词,然后对其树立中文索引,最终运用要害字查找。测验的成果如下:
PaodingAnalyzer中文分词器对“核算机科学技能”分词后的成果是:核算核算机核算科学科学技能科学技能核算科学核算技能。中文分词器根本契合分词要求。在客户端输入以上相关的要害字查找,
宁波seo优化都能成功查找出有相关内容的测验文档机及内容。
4结束语
根据Lucene的中文分词全文查找引擎体系通过测验,功能较为稳健,准确率也较高,根本满足中文环境下的查找需求,但文件的索引速度与构建实时索引方面还有较大的完善空间,其次,查找查询速度较为缓慢,主要原因是每次运行,都会进行索引的加载,影响了功能,后期将对其进行缓存,可大起伏提高查找的速度。
参考文献:
[1]管建,甘剑峰.根据Lucene全文检索引擎的运用研讨与完成[J].核算机工程与规划,2007(2).
[2]费洪晓,康松林,朱小娟,等.根据词频计算的中文分词的研讨[J].核算机工程与运用,2005(7).
本文转载自
宁波seo优化www.leseo.net
补充词条:
宁波谷歌seo
宁波网站seo
宁波seo优化公司
宁波网络seo公司
宁波seo推广公司