ik分词
一. 初始化IKAnalyzer对象
IKAnalyzer ikAnalyzer = new IKAnalyzer(true);
- ik_max_word
会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。 - ik_smart
会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。
索引时用 ik_max_word
查询时用 ik_smart
使用智能分词 true: 对应 ik_smart , false 对应 ik_max_word
二.调用Analyzer对象的tokenStream方法获取TokenStream对象,此对象包含了所有分词结果
这个方法接收两个参数,field name和输入流reader,其中filed name是Lucene的属性列,是对文本内容进行过分词处理和创建索引之后,索引对应的一个名称,类似数据库的列名。因为IK仅仅涉及分词处理,所以对field name没有进行任何处理,可以设置为null
TokenStream stream = ikAnalyzer.tokenStream(null, new StringReader(content));
三.给tokenStyream对象设置一个指针,指针就在哪一个分词上
CharTermAttribute charTermAttribute=tokenStream.addAttribute(CharTermAttribute.class);
四.调用tokenStream对象的reset方法,重置指针,不调用会报错
tokenStream.reset();
五.利用while循环,拿到分词列表的结果 incrementToken方法返回值如果为false代表读取完毕 true代表没有读取完毕
while(tokenStream.incrementToken()) {
System.out.print(charTermAttribute.toString() );
}
六.关闭流
tokenStream.close();