IKAnalyzer分词器自定义扩展字典设置不起作用

vnetoolxw 发布于 2014/03/29 10:19
阅读 10K+
收藏 2
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>



ext.dic是自定义扩展词库,我在里面添加了一项: 欧洲杯四强赛

希望IKAnalyzer能把它当作一个词,不要把它拆分,可是运行结果却是:
加载扩展词典:/ext.dic
加载扩展停止词典:chinese_stopword.dic
加载扩展停止词典:english_stopword.dic
2012年/欧洲杯/四强赛/
我希望是:
2012年/欧洲杯四强赛/
Lucene我用的是最新版4.7, IKAnalyzer也是最新版

加载中
0
pantrick
pantrick

ik最新版不支持4.7吧

0
vnetoolxw
vnetoolxw

那支持的最高版本是多少?

0
vnetoolxw
vnetoolxw

我换成了Lucene4.0.0版本试过了,一样不行,我确定不是Lucene版本过高问题,我用的也是IK Analyzer 2012FF_hf1

他自己也解释FF表示for 4版本即支持Lucene4.x,但我测试就是不起作用,不知为何,我也确定不是ext.dic文件编码不是UTF-8无BOM格式,ext.dic第一行为空行也试过了.
知道怎么解决的请回复,谢谢!

0
G
GouBLiusha
不知道这个问题你解决没有,我也遇到了相同的问题
0
l
liuzhizu123
加载词典很简单 你调试下你的扩展词典的路径对不,搞java的你反编译看看代码不就得了。
0
容器
容器
请问问题解决没有? 我也遇到了
0
容器
容器

我解决了 最后发现还是编码问题.     去网上下载一个 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更新就好了.

    希望能够给你带来帮助.

J
JiangGo
回复 @容器 : 正解,感谢贡献方法。使我解决了这个问题(一定记得要refresh)。插一句:我用Editplus改的编码格式。
容器
容器
用myeclipse 修改.dic文件的时候 记得选中src右键refresh 一下.
0
山东小雷先生
山东小雷先生

感觉像是解决了:

1、除了楼上容器说的编码问题,我发现我的路径还错了,配置前面多了一个斜线;

2、屏蔽掉IKanalyzer的智能分词,效果更明显一些。Analyzer analyzer =newIKAnalyzer(true);参数true改为false。

3、我的测试环境是lucene4.7.2版本的,支持没问题。

返回顶部
顶部