2024年1月19日发(作者:)
IKAnalyzer中文分词器V3.2使用手册目录yzer3.X介绍.......................................................................................................22.使用指南..............................................................................................................................53.词表扩展...........................................................................................................................124.针对solr的分词器应用扩展.........................................................................................145.关于作者...........................................................................................................................16
yzer3.X介绍IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.X则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。1.1IKAnalyzer3.X结构设计
1.2IKAnalyzer3.X特性��采用了特有的“正向迭代最细粒度切分算法“,具有80万字/秒的高速处理能力。采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。��优化的词典存储,更小的内存占用。支持用户词典扩展定义针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。1.3分词效果示例文本原文1:IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。分词结果:ikanalyzer|是|一个|一|个|开源|的|基于|java|语言|开发|级|量级|的|中文|分词|工具包|工具|从|版|开始|ikanalyzer|已经|文本原文2:永和服装饰品有限公司分词结果:永和|和服|服装|装饰品|装饰|饰品|有限|文本原文3:公司推出|出了|的|轻量|2006|年|12|月|推出|1.0个大|个|版本3|
作者博客:分词结果:电子邮件:linliangyi2005@作者|博客||linliangyi|2007|javaeye|com|电子邮件|邮件地址|linliangyi2005@|linliangyi|2005|gmail|com2.使用指南2.1下载地址GoogleCode开源项目:/p/ik-analyzer/GoogleCodeSVN下载:/svn/trunk/2.2与相关项目的版本兼容IK分词器版本3.1.3GA及先前版3.1.5GALucene版本兼容2.9.1及先前版本兼容2.9.1及先前版本Solr版本没有solr接口对solr1.3提供接口实现(详细请参考对应版本使用手册)3.1.6GA兼容2.9.1及先前版本对solr1.3、solr1.4提供接口实现(详细请参考对应版本使用手册)3.2.0GA兼容Lucene2.9及3.0版本不支持Lucene2.4及先前版本仅对solr1.4提供接口实现(请参考本手册solr部分说明)
2.3安装部署IKAnalyzer安装包包含:1.2.3.4.《IKAnalyzer中文分词器V3.X使用手册》(即本文档)(主jar包)(分词器扩展配置文件)ext_(扩展的stopword词典,3.2以上版本提供)它的安装部署十分简单,将部署于项目的lib目录中;与ext_文件放置在代码根目录(对于web项目,通常是WEB-INF/classes目录,同hibernate、log4j等配置文件相同)下即可。2.4Lucene用户快速入门代码样例IKAnalyzerDemo/***IKAnalyzerDemo*@paramargs*/ption;er;nt;;tIndexException;riter;earcher;;oc;
s;ory;tainFailedException;ectory;//引用IKAnalyzer3.0的类yzer;yParser;larity;/***@authorlinly**/publicclassIKAnalyzerDemo{publicstaticvoidmain(String[]args){//LuceneDocument的域名StringfieldName="text";//检索内容Stringtext="IKAnalyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。";//实例化IKAnalyzer分词器Analyzeranalyzer=newIKAnalyzer();Directorydirectory=null;IndexWriteriwriter=null;IndexSearcherisearcher=null;try{//建立内存索引对象directory=newRAMDirectory();iwriter=newIndexWriter(directory,analyzer,true,D);Documentdoc=newDocument();(newField(fieldName,text,,ED));ument(doc);();//实例化搜索器isearcher=newIndexSearcher(directory);//在索引器中使用IKSimilarity相似度评估器ilarity(newIKSimilarity());
Stringkeyword="中文分词工具包";//使用IKQueryParser查询分析器构造Query对象Queryquery=(fieldName,keyword);//搜索相似度最高的5条记录TopDocstopDocs=(query,5);n("命中:"+its);//输出结果ScoreDoc[]scoreDocs=ocs;for(inti=0;i 内容:Document �publicstaticQueryparse(Stringfield,Stringquery)throwsIOException说明:单条件,单Field查询分析参数1:Stringfield,查询的目标域名称参数2:Stringquery,查询的关键字返回值:构造一个单条件,单Field查询器�publicstaticQueryparseMultiField(String[]fields,Stringquery)throwsIOException说明:多Field,单条件查询分析参数1:String[]fields,多个查询的目标域名称的数组参数2:Stringquery,查询的关键字返回值:构造一个多Field,单条件的查询器�publicstaticQueryparseMultiField(String[]fields,Stringquery,[]flags)throwsIOException说明:多Field,单条件,多Occur查询分析参数1:String[]fields,多个查询的目标域名称的数组参数2:Stringquery,查询的关键字参数3:[]flags,查询条件的组合方式(Or/And)返回值:构造一个多Field,单条件,多Occur的查询器�publicstaticQueryparseMultiField(String[]fields,String[]queries)throwsIOException说明:多Field,多条件查询分析参数1:String[]fields,多个查询的目标域名称的数组 参数2:String[]queries,对应多个查询域的关键字数组返回值:构造一个多Field,多条件的查询器�publicstaticQueryparseMultiField(String[]fields,String[]queries,[]flags)throwsIOException说明:多Field,多条件,多Occur查询参数1:String[]fields,多个查询的目标域名称的数组参数2:String[]queries,对应多个查询域的关键字数组参数3:[]flags,查询条件的组合方式(Or/And)返回值:构造一个多Field,多条件,多Occur的查询器.IKSimilarity类.说明:IKAnalyzer的相似度评估器。该类重载了DefaultSimilarity的coord方法,提高词元命中个数在相似度比较中的权重影响,即,当有多个词元得到匹配时,文档的相似度将提高。该类使用方法请参考“代码样例”章节.IKSegmentation类er.说明:这是IK分词器的核心类。它是真正意义上的分词器实现。IKAnalyzer的3.0版本有别于之前的版本,它是一个可以独立于Lucene的Java分词器实现。当您需要在Lucene以外的环境中单独使用IK中文分词组件时,IKSegmentation正是您要找 的。�publicIKSegmentation(Readerinput)说明:IK主分词器构造函数,默认实现最细粒度切分参数1:Readerinput,字符输入读取�publicIKSegmentation(Readerinput,booleanisMaxWordLength)说明:IK主分词器新构造函数,从版本V3.1.1起参数1:Readerinput,字符输入读取参数2:booleanisMaxWordLength,当为true时,分词器进行最大词长切分;当为false时,分词器进行最细粒度切分。�publicLexemenext()throwsIOException说明:读取分词器切分出的下一个语义单元,如果返回null,表示分词器已经结束。返回值:Lexeme语义单元对象,即相当于Lucene的词元对象类er.说明:这是IK分词器的语义单元对象,相当于Lucene中的Token词元对象。由于3.0版本被设计为独立于Lucene的Java分词器实现,因此它需要Lexeme来代表分词的结果。�publicintgetBeginPosition()说明:获取语义单元的起始字符在文本中的位置返回值:int,语义单元相对于文本的绝对起始位置�publicintgetEndPosition() 说明:获取语义单元的结束字符的下一个位置返回值:int,语义单元相对于文本的绝对终止位置的下一个字符位置�publicintgetLength()说明:获取语义单元包含字符串的长度返回值:int,语义单元长度=getEndPosition–getBeginPosition�publicStringgetLexemeText()说明:获取语义单元包含字符串内容返回值:String,语义单元的实际内容,即分词的结果3.词表扩展目前,IK分词器自带的主词典拥有27万左右的汉语单词量。由于作者个人的精力有限,并没有对搜集到的词库进行全范围的筛选、清理。此外,对于分词组件应用场景所涉及的领域的不同,也需要各类专业词库的支持。为此,IK分词器提供了对词典的扩展支持。在IK分词器3.1.3以上版本,同时提供了对用户自定义的停止词(过滤词)的扩展支持。3.1基于API的词典扩充IK分词器支持使用API编程模型扩充您的词典和停止词典。如果您的个性化词典是存储于数据库中,这个方式应该对您适用。API如下:�类nary说明:IK分词器的词典对象。它负责中文词汇的加载,内存管理和匹配检索。�publicstaticvoidloadExtendWords(List 说明:加载用户扩展的词汇列表到IK的主词典中,增加分词器的可识别词语。参数1:List 文件的配置 使用Lucene3.0格式的TokenStream。)4.2solr1.4配置样例使用IKAnalyzer的配置 5.关于作者Blog:il:linliangyi2005@(全文终)
发布评论