首页 > 其他 > 详细

06.中文分析器IKAnalyzer

时间:2017-02-28 13:26:22      阅读:196      评论:0      收藏:0      [点我收藏+]

为什么需要使用IKAnalyzer

  • Lucene自带的标准分析器无法中文分词
  • Lucene自带的中文分析器分词不准确
  • IKAnalyzer支持屏蔽关键词、新词汇的配置

使用示例

建立索引时

QueryParser查询时

单独使用进行分词
自定义词库

    1. classpath下定义IKAnalyzer.cfg.xml文件,如下:
    2. <?xml version="1.0" encoding="UTF-8"?>
    3. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    4. <properties>
    5. <comment>IK Analyzer 扩展配置</comment>
    6. <!-- 用户可以在这里配置自己的扩展字典 -->
    7. <entry key="ext_dict">dicdata/mydict.dic</entry>
    8. <!-- 用户可以在这里配置自己的扩展停用词字典 -->
    9. <entry key="ext_stopwords">dicdata/ext_stopword.dic</entry>
    10. </properties>
    11. classpath下的编辑dicdata/mydict.dic文件,此文件中存储扩展词库,在dicdata/ext_stopword.dic文件中存放停用词。
    12. 注意:mydict.dicext_stopword.dic文件的格式为UTF-8,注意是无BOM UTF-8 编码。

查看分词效果

    1. //创建分析器
    2. Analyzer analyzer = new IKAnalyzer();
    3. //得到TokenStream
    4. TokenStream tokenStream = analyzer.tokenStream("content", new StringReader("Lucene is a Java full-text search engine"));
    5. //设置tokenStream初始状态,否则会抛异常
    6. tokenStream.reset();
    7. //设置要获取分词的偏移量
    8. OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class);
    9. //设置要获取分词的项
    10. CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
    11. while(tokenStream.incrementToken()){
    12. System.out.println("-----------------");
    13. //起始偏移量
    14. System.out.print("-->"+offsetAttribute.startOffset());
    15. //截止偏移量
    16. System.out.print("-->"+offsetAttribute.endOffset());
    17. //分词项的值
    18. System.out.println("-->"+new String(charTermAttribute.toString()));

注意

  • 使用什么分析器建立索引最好使用相同的分析器查询
  • IKAnalyzer的配置文件名称可以自定义

06.中文分析器IKAnalyzer

原文:http://www.cnblogs.com/wesly186/p/a5768e92e71dded6c334ae1250aa3659.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!