liangsi03 / ik-analyzer

Automatically exported from code.google.com/p/ik-analyzer
0 stars 0 forks source link

重开:IKAnalyzer 2012 u4在Web Application下扩展词库不能加载的问题 #55

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
在http://code.google.com/p/ik-analyzer/issues/detail?id=54&can=1提到过,IKA
nalyzer 2012 u4下web 
application中不能加载扩展词库的问题。经过与作者联系,得知
需要将IKAnalyzer.cfg.xml和词库文件都拷贝到tomcat\lib目录下才行�
��

由于想找到问题根源,目前SVN中的代码不知道是哪个版本的��
�所以用反编译代码将代码加入到自己的程序中一个个单步跟�
��,最后彻底整明白了。

2012u4版本加载扩展词库配置文件(即Configuration的构造函数中�
��时,使用的是这个代码:
InputStream input = 
getClass().getClassLoader().getResourceAsStream("IKAnalyzer.cfg.xml");
而对于web容器,Servlet的getClass().getClassLoader()方法获得的是容�
��本身的classpath路径,如tomcat是Tomcat安装目录下的lib目录。
我把IKAnalyzer.cfg.xml和dic文件都拷贝到tomcat/lib下就好了。但这�
��方法相当奇怪,太过于依赖Tomcat。IK设计初衷的解耦,反而�
��使用起来耦合度更高。

而且,在Servlet容器中使用需要拷贝这些文件到Servlet对应的lib
目录中,而在Spring容器使用时,又需要拷贝到spring容器对应��
�目录中(虽然就是classes目录下),进一步加强了耦合度。

目前svn中的代码,这段代码是:
private static final String FILE_NAME = "/IKAnalyzer.cfg.xml";
InputStream input = Configuration.class.getResourceAsStream(FILE_NAME);

我倒觉得这个方法比较靠谱,经过测试,能取到web站点下WEB-I
NF/classes和Java Application下的扩展词库配置文件。

希望在下一个版本能好好测试一下扩展词库的路径问题。也��
�IK越来越完善,替代ICTCLAS成为中文分词的最强者。

Original issue reported on code.google.com by fz...@163.com on 2 May 2012 at 9:01

GoogleCodeExporter commented 8 years ago

Original comment by linliang...@gmail.com on 8 May 2012 at 2:55