首页 > 代码库 > 06.中文分析器IKAnalyzer
06.中文分析器IKAnalyzer
为什么需要使用IKAnalyzer
- Lucene自带的标准分析器无法中文分词
- Lucene自带的中文分析器分词不准确
- IKAnalyzer支持屏蔽关键词、新词汇的配置
使用示例
建立索引时
略
QueryParser查询时
略
单独使用进行分词
自定义词库
在classpath下定义IKAnalyzer.cfg.xml文件,如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!-- 用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">dicdata/mydict.dic</entry>
<!-- 用户可以在这里配置自己的扩展停用词字典 -->
<entry key="ext_stopwords">dicdata/ext_stopword.dic</entry>
</properties>
在classpath下的编辑dicdata/mydict.dic文件,此文件中存储扩展词库,在dicdata/ext_stopword.dic文件中存放停用词。
注意:mydict.dic和ext_stopword.dic文件的格式为UTF-8,注意是无BOM 的UTF-8 编码。
查看分词效果
//创建分析器
Analyzer analyzer = new IKAnalyzer();
//得到TokenStream
TokenStream tokenStream = analyzer.tokenStream("content", new StringReader("Lucene is a Java full-text search engine"));
//设置tokenStream初始状态,否则会抛异常
tokenStream.reset();
//设置要获取分词的偏移量
OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class);
//设置要获取分词的项
CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
while(tokenStream.incrementToken()){
System.out.println("-----------------");
//起始偏移量
System.out.print("-->"+offsetAttribute.startOffset());
//截止偏移量
System.out.print("-->"+offsetAttribute.endOffset());
//分词项的值
System.out.println("-->"+new String(charTermAttribute.toString()));
注意
- 使用什么分析器建立索引最好使用相同的分析器查询
- IKAnalyzer的配置文件名称可以自定义
06.中文分析器IKAnalyzer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。