lucene初探(1):IKAnalyzer2012中文分词扩展初探
lucene初探(一):IKAnalyzer2012中文分词扩展初探
1、到google下载IKAnalyzer2012
http://code.google.com/p/ik-analyzer/downloads/list
2、如果有maven本地服务仓库,直接把IKAnalyzer2012上传到本地maven仓库,无的话直接拷贝到项目lib目录
3、测试还需要使用到lucene的几个包,这边使用3.6.0版本
maven配置
<dependencies> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>3.6.0</version> </dependency> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-highlighter</artifactId> <version>3.6.0</version> </dependency> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-memory</artifactId> <version>3.6.0</version> </dependency> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers</artifactId> <version>3.6.0</version> </dependency> <dependency> <groupId>IKAnalyzer</groupId> <artifactId>IKAnalyzer</artifactId> <version>IKAnalyzer2012</version> <type>jar</type> </dependency> </dependencies>
4、好了,直接上测试例子,
4.1、建立一个java测试项目scmsplitkw
4.2、拷贝下载包里面的stopword.dic、IKAnalyzer.cfg.xml到项目源码根目录
4.3、因为要测试自定义中文分词,在源码根目录创建文件ext.dic
4.4、配置IKAnalyzer.cfg.xml,在properties内添加
写道
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_dict">ext.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;stopword_chinese.dic</entry>
<entry key="ext_dict">ext.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;stopword_chinese.dic</entry>
4.5、特别提醒,以上文件内容格式全部必须是utf-8,用记事本打开,另存为utf-8格式
4.6、既然是测试自定义关键词拆分, 就必须添加一些自定义关键词到ext.dic文件中,注意添加的文字必须是全部小写
yag晶体 集成化文件管理体系 量子点太阳电池 游客满意度指数 血清药理学 硅热法 建筑幕墙 共振腔 蛋白质粒子 行星逃逸层 可靠性建模 空隙模型 基因挖掘 细粒赤铁矿 磁性液晶 wnt分泌 游离甲醛 河鲀毒素 自由表面 磷酸银 多元标记 aire基因 群速度 带3蛋白 可信度 推力轴承 超光谱荧光 锚定性能 嗜铬粒蛋白a衍生多肽 ip电路 雌雄异体生殖 旋翼转速 珍稀物种 元过程
4.7、代码测试
package com.iris.scm.lucene.test; import java.io.StringReader; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.wltea.analyzer.lucene.IKAnalyzer; public class IKAnalyzerTest { public static void main(String[] args) throws Exception { String keyWord = "YAG晶体采用过滤阴极真空电弧技术制备非晶金刚石薄膜,细粒赤铁矿. IKAnalyzer analyzer = new IKAnalyzer(); // 使用智能分词 analyzer.setUseSmart(true); System.out.println("当前使用的分词器:" + analyzer.getClass().getSimpleName()); TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(keyWord)); tokenStream.addAttribute(CharTermAttribute.class); while (tokenStream.incrementToken()) { CharTermAttribute charTermAttribute = tokenStream.getAttribute(CharTermAttribute.class); System.out.println(new String(charTermAttribute.buffer())); } } }
4.8、结果