IKAnalyzer分词器自定义扩展字典设置不起作用
public class TestIKAnalyzer2 { public static void main(String[] args) throws IOException { String text = "2012年欧洲杯四强赛"; Analyzer analyzer = new IKAnalyzer(true); TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(text)); CharTermAttribute term= tokenStream.addAttribute(CharTermAttribute.class); tokenStream.reset(); while(tokenStream.incrementToken()){ System.out.print(term.toString() + "/"); } tokenStream.end(); tokenStream.close(); } }
IKAnalyzer配置如下:
<?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">chinese_stopword.dic;english_stopword.dic</entry> </properties>
希望IKAnalyzer能把它当作一个词,不要把它拆分,可是运行结果却是:
加载扩展词典:/ext.dic
加载扩展停止词典:chinese_stopword.dic
加载扩展停止词典:english_stopword.dic
2012年/欧洲杯/四强赛/
我希望是:
2012年/欧洲杯四强赛/
Lucene我用的是最新版4.7, IKAnalyzer也是最新版
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
感觉像是解决了:
1、除了楼上容器说的编码问题,我发现我的路径还错了,配置前面多了一个斜线;
2、屏蔽掉IKanalyzer的智能分词,效果更明显一些。Analyzer analyzer =newIKAnalyzer(true);参数true改为false。
3、我的测试环境是lucene4.7.2版本的,支持没问题。
用myeclipse 修改.dic文件的时候 记得选中src右键refresh 一下.
回复
正解,感谢贡献方法。使我解决了这个问题(一定记得要refresh)。插一句:我用Editplus改的编码格式。
我解决了 最后发现还是编码问题. 去网上下载一个 notepad++
这个软件很容易滴可以看到文本的编码方式.
确保旧新两个方面的编码正确.
旧方面: 1、确认各个.dic 文件编码为UTF-8无BOM格式
2、确认被分词的data文件文件编码为UTF-8无BOM格式.
新方面: (针对myeclipse)project右键>Resource>Text file encoding
改为UTF-8
这么改可能会让你的.java文件里的String出现乱码. 这个时候简洁的做法是:
右键选中.java文件>open with>other>External programs>Browse 选择notepad++.exe(前边notepad++的安装路径下)
打开后 格式>转为UTF-8编码格式 ctrl+s 保存. 回到myEclipse更新就好了.
希望能够给你带来帮助.
请问问题解决没有? 我也遇到了
加载词典很简单 你调试下你的扩展词典的路径对不,搞java的你反编译看看代码不就得了。
不知道这个问题你解决没有,我也遇到了相同的问题
我换成了Lucene4.0.0版本试过了,一样不行,我确定不是Lucene版本过高问题,我用的也是IK Analyzer 2012FF_hf1
他自己也解释FF表示for 4版本即支持Lucene4.x,但我测试就是不起作用,不知为何,我也确定不是ext.dic文件编码不是UTF-8无BOM格式,ext.dic第一行为空行也试过了.
知道怎么解决的请回复,谢谢!
那支持的最高版本是多少?
ik最新版不支持4.7吧