hadoop学习过程-2013.08.30.2--初次使用IKAnalyzer来切词--切词试验

发布时间:2016-12-10 11:27:26 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"hadoop学习过程-2013.08.30.2--初次使用IKAnalyzer来切词--切词试验",主要涉及到hadoop学习过程-2013.08.30.2--初次使用IKAnalyzer来切词--切词试验方面的内容,对于hadoop学习过程-2013.08.30.2--初次使用IKAnalyzer来切词--切词试验感兴趣的同学可以参考一下。

代码如下: package test; import java.io.StringReader; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.wltea.analyzer.lucene.IKAnalyzer; /** * 切词演示 * @author caogl * */ public class IKAnalyzerTest { public static void main(String[] args) throws Exception{ new IKAnalyzerTest().testIKAnalyzer(); } public void testIKAnalyzer() throws Exception { String keyWord = "2013年欧洲杯四强赛"; // String keyWord = "中方数月内三度警告美方勿干涉香港内政 "; IKAnalyzer analyzer = new IKAnalyzer(); //使用智能分词 analyzer.setUseSmart(true); //打印分词结果 printAnalysisResult(analyzer,keyWord); } /** * 打印出给定分词器的切词结果 */ private void printAnalysisResult(Analyzer analyzer, String keyWord) throws Exception { // System.out.println("当前使用的分词器:" + analyzer.getClass().getSimpleName()); TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(keyWord)); tokenStream.addAttribute(CharTermAttribute.class); CharTermAttribute charTermAttribute = null; //以下循环中charTermAttribute.termBuffer是同一个对象 while (tokenStream.incrementToken()) { charTermAttribute = tokenStream.getAttribute(CharTermAttribute.class); // System.out.println(new String(charTermAttribute.buffer())); System.out.println(new String(charTermAttribute.toString())); } } }     依赖的jar包: IKAnalyzer2012_u6/IKAnalyzer2012_u6.jar lucene-3.6.0/lucene-core-3.6.0.jar   程序输出结果分析:  输出结果是: (#之间的为输出,不包括单引号)  # 2013年 欧洲杯3年 四强赛3年 # 每一行后面都有9个类似'口'的符号。输出结果解释如下: 第一次进循环时, charTermAttribute.termBuffer内容为 ['2', '0', '1', '3', '年', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000'] 第二次进循环时, charTermAttribute.termBuffer内容为 ['欧', '洲', '杯', '3', '年', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000'] 第三次进循环时, charTermAttribute.termBuffer内容为 ['四', '强', '赛', '3', '年', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000'] 因此产生了上述输出。 当然了如果输出charTermAttribute.toString(),程序输出结果是:  # 2013年 欧洲杯 四强赛 # 得到的内容正常了,不再包括上次循环的内容。  

上一篇:FileInputStream 和 FileOutputStream
下一篇:第十一次java课后笔记

相关文章

相关评论