ik分词

1 篇文章 0 订阅

一. 初始化IKAnalyzer对象

IKAnalyzer ikAnalyzer = new IKAnalyzer(true);
  1. ik_max_word
    会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。
  2. 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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值