`
linliangyi2007
  • 浏览: 1004777 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

发布IKAnnlyzer3.2.0稳定版 for Lucene3.0

阅读更多
最新3.2.5版本已经推出,http://linliangyi2007.iteye.com/blog/758451

前言
由于Lucene3.0 API的全面升级,且不再与Lucene2.X兼容, IK Analyzer为此推出了3.2.0版本。该版本仅支持Lucene2.9 / 3.0和solr1.4的接口实现。
PS:使用Solr1.3和lucene2.9之前版本的用户请下载IK Analyzer3.1.6GA使用,谢谢!

IK Analyzer 3.2.0版本修订
  • 1.支持Lucene3.0 Analyzer实现
  • 2.移除solr1.3接口,修改solr1.4接口
  • 3.默认开放停止词功能,发布IK自带的ext_stopword.dic停止词典
  • 4.优化了IKQueryParser的性能


IK分词器对Lucene及solr的版本支持明细表



下载地址

IKAnalyzer3.2.0稳定版发布包

IKAnalyzer3.2.0稳定版使用手册





分享到:
评论
54 楼 pjw0221 2010-03-12  
在补充下,我在main.dic 面 加入 同样的文字都能查出来,但是在mydict.dic加入就不行了。
53 楼 pjw0221 2010-03-12  
我从3.2.0 里 复制的 停用词的那个文件,然后把内容删了 然后写的人名称,
不知道这里 有问题吗? 我用MyEclipse也设置了一下utf-8的 
52 楼 linliangyi2007 2010-03-12  
pjw0221 写道
String zhText = "22222Lucene的API接口设计的李阿炳";
我在mydict.dic文件中 加入了李阿炳 

但是分词结果还是:
(22222lucene,0,11)
(22222,0,5)
(lucene,5,11)
(api,12,15)
(接口,15,17)
(设计,17,19)
(李,20,21)
(阿炳,21,23) 


李阿炳 并没有 当成一个词。   3.1.6版本 


首先3.2版本和3.1.6版本支持的lucene API是不同的,所以在3.2版本中没有next方法,这个不是IK定的,是lucene3.0定的接口

其次,你的扩展词库是否使用UTF-8编码呢?请确认
51 楼 pjw0221 2010-03-12  
String zhText = "22222Lucene的API接口设计的李阿炳";
我在mydict.dic文件中 加入了李阿炳 

但是分词结果还是:
(22222lucene,0,11)
(22222,0,5)
(lucene,5,11)
(api,12,15)
(接口,15,17)
(设计,17,19)
(李,20,21)
(阿炳,21,23) 


李阿炳 并没有 当成一个词。   3.1.6版本 
50 楼 pjw0221 2010-03-12  
补充48楼的 我用的3.1.6的版本 lucene是2.4的  那个扩展词库不能用。
49 楼 pjw0221 2010-03-12  
配置路径啥的都没问题,您的那个停用词配置文件 可以用,但是用户扩展词库用不了。
48 楼 pjw0221 2010-03-12  
1:请教下 我想用自己的扩展词库,比如说人名, 我在IKAnalyzer.cfg.xml
配置了<entry key="ext_dict">/mydic.dic;</entry>
并在mydic.dic里 写了人名字,但是索引的时候 却搜不到。这是啥原因呢?

不知道IKAnalyzer 的分词效果是啥样的。
2:
另外Lucene3.0之前的版本 都可以测试分词器分词 
TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(text));
for (Token token = new Token(); (token = tokenStream.next(token)) != null;) {
System.out.println(token);
}

但是Lucene3.0 的TokenStream却没有了next()方法,不知道您这个分词器 如何测试呢?
47 楼 MultiArrow 2010-02-26  
linliangyi2007 写道
MultiArrow 写道
看了forfuture1978的文章,里面提到在建立索引的时候会先去除停词。
在IK中,搜索时是不是也把搜索条件中的符合停词的词给去掉?
如果是这样,那建立索引时去除停词这个动作不是多此一举了吗?


实际上,不论在建立索引,还是输入搜索条件,都需要用到分词器,建立是会去除停词,搜索时也去除停词,两个是同一个过程啊。

写搜索的代码时,没有用到分词器,所以想歪了。
46 楼 linliangyi2007 2010-02-26  
MultiArrow 写道
看了forfuture1978的文章,里面提到在建立索引的时候会先去除停词。
在IK中,搜索时是不是也把搜索条件中的符合停词的词给去掉?
如果是这样,那建立索引时去除停词这个动作不是多此一举了吗?


实际上,不论在建立索引,还是输入搜索条件,都需要用到分词器,建立是会去除停词,搜索时也去除停词,两个是同一个过程啊。
45 楼 MultiArrow 2010-02-26  
看了forfuture1978的文章,里面提到在建立索引的时候会先去除停词。
在IK中,搜索时是不是也把搜索条件中的符合停词的词给去掉?
如果是这样,那建立索引时去除停词这个动作不是多此一举了吗?
44 楼 linliangyi2007 2010-02-26  
MultiArrow 写道
您好,请问我使用org.wltea.analyzer.dic.Dictionary.loadExtendStopWords方法后扩充的词汇存在在哪?我在stopword.dic中找不到。是没有存储吗?因为我看到org.wltea.analyzer.dic.Dictionary.loadExtendWords后会将词汇存储到IK的主词典中,所有有此疑问。
还有我用SSH,IKAnalyzer.cfg.xml和ext_stopword.dic的路径为config包中,在IKAnalyzer.cfg.xml中设置
<entry key="ext_stopwords">/config/ext_stopword.dic</entry>

,xml已经加载到了,但是停止词没用到。这是什么原因?


通过loadExtendStopWords方法后扩充的词没有存储在文件内。

文章中说的主词典是指内存中的词典对象,即,扩展词和原本词库内的词都会在内存中合并到相同的词库中。

IK的字典是单向加载模式,不会反向的存储到磁盘文件中,你可以通过配置,从文件中读取,也可以通过API动态添加。
43 楼 MultiArrow 2010-02-26  
您好,请问我使用org.wltea.analyzer.dic.Dictionary.loadExtendStopWords方法后扩充的词汇存在在哪?我在stopword.dic中找不到。是没有存储吗?因为我看到org.wltea.analyzer.dic.Dictionary.loadExtendWords后会将词汇存储到IK的主词典中,所有有此疑问。
还有我用SSH,IKAnalyzer.cfg.xml和ext_stopword.dic的路径为config包中,在IKAnalyzer.cfg.xml中设置
<entry key="ext_stopwords">/config/ext_stopword.dic</entry>

,xml已经加载到了,但是停止词没用到。这是什么原因?
42 楼 linliangyi2007 2010-01-29  
zctya 写道
linliangyi2007 写道
zctya 写道
用的3.0及此分词器,在addDocument时报了一下java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z

请问是什么问题


java 接口的版本不对,会造成找不到抽象方法的异常。具体原因就多样化了,查查jar的实际引用版本吧,常常是IDE没有把正确的jar分布到lib的目录里,会有这个问题



嗯,这个问题解决了,本来是弄个3.2的,结果不知道怎么搞的,变成了3.16

想问下,为什么搜索单个字的时候,会搜索不到结果呢? 如何处理下呢?谢谢~!


lucene的原理就是按切分的词来搜索,而不是按字搜索,除非你把所有的词都切成单个字,否则搜索不到是正常的。
41 楼 zctya 2010-01-29  
linliangyi2007 写道
zctya 写道
用的3.0及此分词器,在addDocument时报了一下java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z

请问是什么问题


java 接口的版本不对,会造成找不到抽象方法的异常。具体原因就多样化了,查查jar的实际引用版本吧,常常是IDE没有把正确的jar分布到lib的目录里,会有这个问题



嗯,这个问题解决了,本来是弄个3.2的,结果不知道怎么搞的,变成了3.16

想问下,为什么搜索单个字的时候,会搜索不到结果呢? 如何处理下呢?谢谢~!
40 楼 linliangyi2007 2010-01-27  
ajonjun 写道
开源代码能共享下吗?


当然可以啊,既然是开源项目哪有没代码的,哈哈。

上IK的google code站点吧,有rar包的源码,也有svn方式的下载。
39 楼 ajonjun 2010-01-27  
开源代码能共享下吗?
38 楼 linliangyi2007 2010-01-27  
zctya 写道
用的3.0及此分词器,在addDocument时报了一下java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z

请问是什么问题


java 接口的版本不对,会造成找不到抽象方法的异常。具体原因就多样化了,查查jar的实际引用版本吧,常常是IDE没有把正确的jar分布到lib的目录里,会有这个问题
37 楼 zctya 2010-01-27  
用的3.0及此分词器,在addDocument时报了一下java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z

请问是什么问题
36 楼 linliangyi2007 2010-01-16  
Arden 写道
中文分词跟lucence的版本有什么关系,不是可以独立的吗?先通过中文分词把词分好,然后传给搜索引擎不就行了?


哥哥不做Lucene吧,理论上两者没关系,但是lucene新旧版本的分词接口不一样,就变的有关系了。
35 楼 Arden 2010-01-15  
中文分词跟lucence的版本有什么关系,不是可以独立的吗?先通过中文分词把词分好,然后传给搜索引擎不就行了?

相关推荐

Global site tag (gtag.js) - Google Analytics