Lucene学习——IKAnalyzer中文分词
一、环境
1、平台:MyEclipse8.5/JDK1.5
2、开源框架:Lucene3.6.1/IKAnalyzer2012
3、目的:测试IKAnalyzer的分词效果
二、开发调试
1、下载框架
1)IKAnalyzer:http://code.google.com/p/ik-analyzer/downloads/list
2)Lucene:http://www.apache.org/dist/lucene/java/3.6.1/
2、添加依赖的库
1)添加Lucene:lucene-core-3.6.1.jar
2)添加IKAnalyzer:IKAnalyzer2012.jar
3、配置IKAnalyzer
1)添加配置文件IKAnalyzer.cfg.xml和StopWord词典库stopword.dic文件,把这两个文件放到src目录下,也就是classpath路径下
4、编写测试程序,测试代码如下
package org.cyxl.lucene.test; import java.io.StringReader; import org.apache.lucene.analysis.Analyzer; 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) { String keyWord = "IKAnalyzer的分词效果到底怎么样呢,我们来看一下吧"; //创建IKAnalyzer中文分词对象 IKAnalyzer analyzer = new IKAnalyzer(); // 使用智能分词 analyzer.setUseSmart(true); // 打印分词结果 try { printAnalysisResult(analyzer, keyWord); } catch (Exception e) { e.printStackTrace(); } } /** * 打印出给定分词器的分词结果 * * @param analyzer * 分词器 * @param keyWord * 关键词 * @throws Exception */ private static void printAnalysisResult(Analyzer analyzer, String keyWord) throws Exception { System.out.println("["+keyWord+"]分词效果如下"); TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(keyWord)); tokenStream.addAttribute(CharTermAttribute.class); while (tokenStream.incrementToken()) { CharTermAttribute charTermAttribute = tokenStream .getAttribute(CharTermAttribute.class); System.out.println(charTermAttribute.toString()); } } }
5、结果如下
[IKAnalyzer的分词效果到底怎么样呢,我们来看一下吧]分词效果如下
加载扩展停止词典:stopword.dic
ikanalyzer
的
分词
效果
到底
怎么样
呢
我们
来看
一下
吧
6、扩展自己的词典和StopWord
1)在src目录下,新建自身的词典文件ext.dic,输入词如下(注意第一行留空,不知道为什么)
分词效果
2)在src目录下,新建自身的StopWord文件chinese_stopword.dic(也是第一行留空,疑惑中)
吧
呢
来
的
3)配置IKAnalyzer配置文件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">ext.dic;</entry> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry> </properties>
4)配置好后测试结果如下
[IKAnalyzer的分词效果到底怎么样呢,我们来看一下吧]分词效果如下
加载扩展词典:ext.dic
加载扩展停止词典:stopword.dic
加载扩展停止词典:chinese_stopword.dic
ikanalyzer
分词效果
到底
怎么样
我们
来看
一下
三、总结
1、IKAnalyzer分词效果基本还是可以的,可以根据我们自身的项目业务扩展自己的词典和StopWord
2、下面就结果中文分词和Lucene将上一篇的搜索引擎雏形加以修改,让它适合中文网站
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix