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

发布 IK Analyzer 3.2.5 稳定版 for Lucene3.0

阅读更多
新版本IKAnnlyzer3.2.8已发布!
地址: http://linliangyi2007.iteye.com/blog/941132


IK Analyzer 3.2.5版本修订

在3.2.3版本基础上,更新如下:
1.修订了分词器内部的数组越界异常
2.重构了字母子分词器,强化了对英文和阿拉伯混合字窜的切分
3.根据用户意见,修订了字典扩展的API接口,List-->Collection
4.考虑到linux系统下用户使用的方便性,将发布包从rar改为zip压缩

PS:如果您使用的是Solr1.3或者v2.9之前的Lucene,请下载IK Analyzer3.1.6GA使用! IK Analyzer3.2.X仅支持Lucene3.0以上版本。

下载地址

IK Analyzer 3.2.5分布包

IK Analyzer 3.2.5源码包
分享到:
评论
41 楼 monkeygreg 2011-10-26  
linliangyi2007 写道
monkeygreg 写道

'无关'&&('技术' '牛人') 
'无关' ('技术' '牛人')  
'无关' ('技术'||'牛人') 
'无关'&&('技术'||'牛人')
'无关'('技术'||'牛人')  



查询关键字之间都必须有逻辑操作符,'无关'('技术'||'牛人') 这种就是非法的,‘无关’后面没有&&或者||是什么意思?



我以为中间没有空格就表示与的关系,比如'技术牛人'解析成'技术'&&'牛人'

另外空格是不是表示||的关系呢,如果那样的话
'无关'&&('技术' '牛人')  有结果
'无关'&&('技术'||'牛人') 无结果
这两个测试为什么会出现不同的结果呢
40 楼 linliangyi2007 2011-10-26  
monkeygreg 写道

'无关'&&('技术' '牛人') 
'无关' ('技术' '牛人')  
'无关' ('技术'||'牛人') 
'无关'&&('技术'||'牛人')
'无关'('技术'||'牛人')  



查询关键字之间都必须有逻辑操作符,'无关'('技术'||'牛人') 这种就是非法的,‘无关’后面没有&&或者||是什么意思?
39 楼 monkeygreg 2011-10-26  
linliangyi2007 写道
monkeygreg 写道
林老师,我有一个ikqueryparser的问题一直很疑惑,今天做了个详细测试,您看能否给解释下。

对于文本:“技术牛人”。分词索引后进行检索。
我写了六个query表达式进行检索,主要用来测试不空格、空格、&&和||四个:

无关'('技术' '牛人')    有结果
无关'&&('技术' '牛人')  有结果
无关' ('技术' '牛人')   有结果
无关' ('技术'||'牛人')  有结果
无关'&&('技术'||'牛人') 无结果
无关'('技术'||'牛人')   无结果

可以看到括号里面我都想采用“或”的关系,括号外面1256句想用与的关系,34用或

照此逻辑,3456句的结果是正确的,12句却无法理解。请问林老师词与词的与或关系应如何表达。说明文档里只给了多域之间的与或逻辑的例子。


你的这些表达式对于IKQueryParser木有一个是合法的。不知道你做的是什么测试。
IKQueryParser与Lucene的QueryParser的表达式是不一样的。



文档里给出的例子是   id='1231' && (title:'文档标题'|| content:'内容') – author='helloworld'  下面也说支持&&||和括号逻辑。

是否是说这些符号只适用于多域的情况

另外,我列出6个表达式都漏掉了一开始的单引号,不知道您说的是不是这个非法,下面重新写一下,林老师赐教啦!

'无关'('技术' '牛人')   
'无关'&&('技术' '牛人') 
'无关' ('技术' '牛人')  
'无关' ('技术'||'牛人') 
'无关'&&('技术'||'牛人')
'无关'('技术'||'牛人')  
38 楼 linliangyi2007 2011-10-17  
monkeygreg 写道
林老师,我有一个ikqueryparser的问题一直很疑惑,今天做了个详细测试,您看能否给解释下。

对于文本:“技术牛人”。分词索引后进行检索。
我写了六个query表达式进行检索,主要用来测试不空格、空格、&&和||四个:

无关'('技术' '牛人')    有结果
无关'&&('技术' '牛人')  有结果
无关' ('技术' '牛人')   有结果
无关' ('技术'||'牛人')  有结果
无关'&&('技术'||'牛人') 无结果
无关'('技术'||'牛人')   无结果

可以看到括号里面我都想采用“或”的关系,括号外面1256句想用与的关系,34用或

照此逻辑,3456句的结果是正确的,12句却无法理解。请问林老师词与词的与或关系应如何表达。说明文档里只给了多域之间的与或逻辑的例子。


你的这些表达式对于IKQueryParser木有一个是合法的。不知道你做的是什么测试。
IKQueryParser与Lucene的QueryParser的表达式是不一样的。
37 楼 monkeygreg 2011-10-14  
林老师,我有一个ikqueryparser的问题一直很疑惑,今天做了个详细测试,您看能否给解释下。

对于文本:“技术牛人”。分词索引后进行检索。
我写了六个query表达式进行检索,主要用来测试不空格、空格、&&和||四个:

无关'('技术' '牛人')    有结果
无关'&&('技术' '牛人')  有结果
无关' ('技术' '牛人')   有结果
无关' ('技术'||'牛人')  有结果
无关'&&('技术'||'牛人') 无结果
无关'('技术'||'牛人')   无结果

可以看到括号里面我都想采用“或”的关系,括号外面1256句想用与的关系,34用或

照此逻辑,3456句的结果是正确的,12句却无法理解。请问林老师词与词的与或关系应如何表达。说明文档里只给了多域之间的与或逻辑的例子。
36 楼 linliangyi2007 2011-01-06  
wu_quanyin 写道
IKQueryParser里面有这个属性而且是静态的
private static boolean isMaxWordLength;
get...
set...

这不是会有线程问题?



没人告诉你IKQueryParser这个类是线程安全的啊!

实时上,这个类提供了一种默认的查询组合的逻辑实现。他并不能代替一个商用的搜索逻辑,包括你在信中提到的SHOULD。MUST问题。

说他是默认实现,是因为笔者任务MUST的逻辑对连续的文字序列而已跟适合,你如果不认同默认实现,你完全可以使用Lucene的Query接口构造自己的复杂业务。

IKQueryParser和Lucene自带的QueryParser一样,都只是一个简单工具类。

Lucene默认的Query方式不是也让很多用户感到不解~~

木有完美的东东啊~~尤其是分词这块~~需要你自己个性定制的东西很多,否则人人都可以做google了,呵呵


35 楼 wu_quanyin 2011-01-05  
IKQueryParser里面有这个属性而且是静态的
private static boolean isMaxWordLength;
get...
set...

这不是会有线程问题?
34 楼 亦梦亦真 2011-01-04  
林老师,您的这个框架我已经很仔细的学完了,而且感觉扩展性很强,我在这里加入了日文,韩文,德文等字库。但是现在我们的系统使用HDFS存储数据的,我想把创建的索引文件也放到HDFS上,可是总是行不通。我查了,网上有些朋友是将文件写到内存中,然后再放到HDFS上,下次添加索引的时候,再把它拿下来,添加上去再放上去,这样我觉得效率太低了。而直接实在那个HDFS文件系统的某个路径,却报出错误,是不是LUCENE还不能支持这个功能呢?
33 楼 linliangyi2007 2010-12-28  
yanxin64 写道
请教大家一个问题,怎么关联源码到jar包后,在eclipse打开,源码的中文注释都是乱码,有办法解决吗?



项目是使用UTF-8编码的,请检查你的eclipse的环境
32 楼 yanxin64 2010-12-28  
请教大家一个问题,怎么关联源码到jar包后,在eclipse打开,源码的中文注释都是乱码,有办法解决吗?
31 楼 lovit 2010-12-16  
文档中找到了。。不用了。谢谢!
30 楼 unkin 2010-12-16  
林良益出品,不顶不行。
29 楼 hcjhuanghe 2010-12-16  
请问ik如何在spring和compass环境中使用?
28 楼 abandoner2007 2010-12-15  
建议将:

     DictSegment 类中 hasNextNode() 方法改为:hasChildNode()
27 楼 laigood12345 2010-12-14  
linliangyi2007 写道
laigood12345 写道
请教一个问题,能不能不切分重复的字,比如输入中国中药,它切分为中国,国中,中药,怎么让它只输出中国,中药?就是分词后组合起来就是完整的输入语句,而不产生词语重叠。


目前IK不支持歧义排除功能。确切的说,分词器并不知道“中国中药”应该切成“中国”+“中药”还是“中”+“国中”+“药”更合理

谢谢,我再想想其它办法。
26 楼 linliangyi2007 2010-12-13  
laigood12345 写道
请教一个问题,能不能不切分重复的字,比如输入中国中药,它切分为中国,国中,中药,怎么让它只输出中国,中药?就是分词后组合起来就是完整的输入语句,而不产生词语重叠。


目前IK不支持歧义排除功能。确切的说,分词器并不知道“中国中药”应该切成“中国”+“中药”还是“中”+“国中”+“药”更合理
25 楼 laigood12345 2010-12-13  
请教一个问题,能不能不切分重复的字,比如输入中国中药,它切分为中国,国中,中药,怎么让它只输出中国,中药?就是分词后组合起来就是完整的输入语句,而不产生词语重叠。
24 楼 linliangyi2007 2010-11-28  
ljwan12 写道
像U盘、手机QQ等汉字和字母混合的词分不出来。。。。。


对于不同的字符集,IK采用不同的子分词器进行处理,因此不可能切分出混合词,“U盘”一定会切成“U + 盘”两个,手机QQ一定是“手机+QQ“ ,这个不影响搜索,但可能影响语义分析应用。

IK的侧重点在于搜索,如果做语义分析,可以使用smartcn分词
23 楼 ljwan12 2010-11-28  
像U盘、手机QQ等汉字和字母混合的词分不出来。。。。。
22 楼 shadowlin 2010-11-17  
linliangyi2007 写道
shadowlin 写道
问一个比较弱智的问题啊,如果我要看分词的结果,现在要怎么看呢?
以前的term.next似乎在3.0以后都没有掉了。



                        String t = "你要尝试切分的文本";  
			IKSegmentation ikSeg = new IKSegmentation(new StringReader(t) , false);
			try {
				Lexeme l = null;
				while( (l = ikSeg.next()) != null){
					System.out.println(l);
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}


谢谢啊

相关推荐

Global site tag (gtag.js) - Google Analytics