- 浏览: 1013002 次
- 性别:
- 来自: 福州
最新评论
-
guanxin2012:
大神,您好。非常感谢您贡献了IKExpression。我们现在 ...
分享开源表达式解析器IK-Expression2.0 -
qqgigas:
LZ,public boolean createUser(LD ...
Sun Directory Server/LDAP学习笔记(二)——API说明及代码样例 -
gao_shengxian:
Hibernate: update T_GX_TEST set ...
优雅Java编程 之 使用Hibernate存储Oracle Spatial对象 -
a78113534:
感谢大神,在安卓里面调用成功了。
发布IK Expression开源表达式解析器 V2.1.0 -
majiedota:
加油
来自开源支持者的第一笔捐赠
IK Analyzer 3.2.8版本修订
以下对新增的查询表达式做详细说明:
IK3.2.8版本为简化用户对查询逻辑的处理,提供了基于表达式的搜索逻辑处理。它与Lucene自带表达式的不同之处,在于它采用了IKQueryParser对中文分词歧义处理的算法。相对Lucene QueryParser而言,用它生成的Query对象也许更能命中搜索结果。
表达式样例:
下载地址:
IK分词器3.2.8发布包
IK分词器3.2.8源码包
PS:如果您使用的是Solr1.3或者v2.9之前的Lucene,请下载IK Analyzer3.1.6GA使用! IK Analyzer3.2.X仅支持Lucene3.0以上版本。
分词效果示例
IK Analyzer 3.2.8版本支持 细粒度切分 和 最大词长切分,以下是两种切分方式的演示样例。
文本原文1:
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本。
最大词长分词结果:
最细粒度分词结果:
文本原文2:
作者博客:linliangyi2007.iteye.com 电子邮件:linliangyi2005@gmail.com
最大词长分词结果:
最细粒度分词结果:
文本原文3
古田县城关六一四路四百零五号
最大词长分词结果:
最细粒度分词结果:
文本原文4
曙光天阔 I620r-G /A950r-F 夏普SH9020C
最大词长分词结果:
最细粒度分词结果:
速度不是分词器的核心啊,不建议因为速度去更换一个分词器。
IK在后期考虑用速度换效果。实际上分词效果才是关键的问题
哦 先谢谢 林老师的快速答复!
这里 还有个小问题 假如我用IK + lucene3.3 或者 solr1.4 引用hadoop都没有问题的吧。。。。庖丁很久没有更新了 今后肯定会被超越 目前IK分词效果已经超过庖丁了吗?
速度不是分词器的核心啊,不建议因为速度去更换一个分词器。
IK在后期考虑用速度换效果。实际上分词效果才是关键的问题
那说明这个dic文件时有BOM的UTF-8,需要另存为无BOM的UTF-8格式,那么第一行就OK了
换成3.2.8版本就好了
这只能是你的运行环境中jar版本混乱的问题,跟IK编码无关。
你这个测试是放在main方法里面的吧,执行的时候,每次要启动jvm,ik要载入字典的。
你这个测试99.999%时间不是测试IK分词,而是测试字典加载。
IK目前对英文处理相对简单,没有词干处理功能
IK拥有27万词的词典,需要占用27m的内存空间,因此你要注意你的jvm内存设置,默认情况下jvm只有64M,这个对于现有的服务,是很不够的。
Spring作为一个IoC容器,应该没有什么不兼容的说法吧。
另外,别用IKQueryParser来做分词(之前有人这么做过),它是用来解析短文本的(用来解析搜索关键字的)。
恩。。。谢谢你!
我先按你说的做一下,,,
我是用IKSegmentation 做分词的。。。。。。
谢谢林老师,,,我测试了,这里的分词没有问题。。。。而且你的分词也不会导致内存溢出!
IK拥有27万词的词典,需要占用27m的内存空间,因此你要注意你的jvm内存设置,默认情况下jvm只有64M,这个对于现有的服务,是很不够的。
Spring作为一个IoC容器,应该没有什么不兼容的说法吧。
另外,别用IKQueryParser来做分词(之前有人这么做过),它是用来解析短文本的(用来解析搜索关键字的)。
恩。。。谢谢你!
我先按你说的做一下,,,
我是用IKSegmentation 做分词的。。。。。。
IK拥有27万词的词典,需要占用27m的内存空间,因此你要注意你的jvm内存设置,默认情况下jvm只有64M,这个对于现有的服务,是很不够的。
Spring作为一个IoC容器,应该没有什么不兼容的说法吧。
另外,别用IKQueryParser来做分词(之前有人这么做过),它是用来解析短文本的(用来解析搜索关键字的)。
请注意标题,for lucene3.x的,你用的估计是4.0的吧,那东东没稳定,api还在修改中呢!!
很少见lucene这样每次大版本更新都搞的不向下兼容的,真应该bs之~~
- 1.优化了英文字符处理,支持如:C++ 等带符号单词输出
- 2.简化了数词处理,使输出结果更符合用户观感
- 3.改进了最大词长切分,使输出结果更符合用户观感
- 4.性能优化,目前IK分词器的速度为约85万字/秒(1600K字节/S)
- 5.新增IK简易查询表达式,简化用户使用
以下对新增的查询表达式做详细说明:
IK3.2.8版本为简化用户对查询逻辑的处理,提供了基于表达式的搜索逻辑处理。它与Lucene自带表达式的不同之处,在于它采用了IKQueryParser对中文分词歧义处理的算法。相对Lucene QueryParser而言,用它生成的Query对象也许更能命中搜索结果。
表达式样例:
id='1231' && (title:'文档标题'|| content:'内容') – author='helloworld'
- 1.表达式使用 属性名<->属性值 键值对的形式,属性值使用”’”单引号标识。
- 2.在键值对中使用 “=”等号,表示对该属性的精确搜索(不分词),适用于对ID、编号、分类等精确值属性搜索;使用“: ”冒号表示对属性的模糊搜索(分词搜索),适用于文本内容的全文搜索。
- 3.在使用“: ”时,连续的搜索关键字将解析为 AND 逻辑,如果关键字中带有空格,这解析为OR逻辑。如:title:'文档标题' 表示搜索title中同时包含“文档”AND“标题“的数据,title:'文档_标题' 表示搜索title中包含“文档”OR“标题“。(这个例子中,我们默认你使用的IK分词器能将”文档标题“切分为”文档“和”标题“两个词)
- 4.表达式支持“&&”与 “||” 或“-”非的逻辑操作,以及“( )”括号优先级定义。注意“-”非逻辑不能单独使用,即 “– author='helloworld'” 是非法表达式。
- 5.目前就是这么简单,暂不支持更复杂的搜索逻辑:).
下载地址:
IK分词器3.2.8发布包
IK分词器3.2.8源码包
PS:如果您使用的是Solr1.3或者v2.9之前的Lucene,请下载IK Analyzer3.1.6GA使用! IK Analyzer3.2.X仅支持Lucene3.0以上版本。
分词效果示例
IK Analyzer 3.2.8版本支持 细粒度切分 和 最大词长切分,以下是两种切分方式的演示样例。
文本原文1:
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本。
最大词长分词结果:
引用
ikanalyzer | 是 | 一个 | 开源 | 的 | 基于 | java | 语言 | 开发 | 的 | 轻量级 | 的 | 中文 | 分词 | 工具包 | 从 | 2006 | 年 | 12 | 月 | 推出 | 1.0 | 版 | 开始 | ikanalyzer | 已经 | 推出 | 出了 | 3 | 个 | 大 | 版本
最细粒度分词结果:
引用
ikanalyzer | 是 | 一个 | 一 | 个 | 开源 | 的 | 基于 | java | 语言 | 开发 | 的 | 轻量级 | 量级 | 的 | 中文 | 分词 | 工具包 | 工具 | 从 | 2006 | 年 | 12 | 月 | 推出 | 1.0 | 版 | 开始 | ikanalyzer | 已经 | 推出 | 出了 | 3 | 个 | 大 | 版本
文本原文2:
作者博客:linliangyi2007.iteye.com 电子邮件:linliangyi2005@gmail.com
最大词长分词结果:
引用
作者 | 博客 | linliangyi2007.iteye.com | 电子邮件 | linliangyi2005@gmail.com
最细粒度分词结果:
引用
作者 | 博客 | linliangyi2007.iteye.com | linliangyi | 2007 | javaeye | com | 电子邮件 | linliangyi2005@gmail.com | linliangyi | 2005 | gmail | com
文本原文3
古田县城关六一四路四百零五号
最大词长分词结果:
引用
古田县 | 县城 | 城关 | 六一四 | 路 | 四百零五 | 号
最细粒度分词结果:
引用
古田县 | 古田 | 县城 | 城关 | 六一四 | 六一 | 四 | 路 | 四百零五 | 四 | 百 | 零 | 五 | 号
文本原文4
曙光天阔 I620r-G /A950r-F 夏普SH9020C
最大词长分词结果:
引用
曙光 | 天 | 阔 | i620r-g | a950r-f | 夏普 | sh9020c
最细粒度分词结果:
引用
曙光 | 天 | 阔 | i620r-g | i | 620 | r | g | a950r-f | a | 950 | r | f | 夏普 | sh9020c | sh | 9020 | c
评论
24 楼
Iloseyou
2011-07-29
linliangyi2007 写道
Iloseyou 写道
4.性能优化,目前IK分词器的速度为约85万字/秒(1600K字节/S)
------------速度超过庖丁了。。。。。
现在使用庖丁。。。我是不是考虑换成IK了。。。。。。。。。
支持IK的给我几点介意
------------速度超过庖丁了。。。。。
现在使用庖丁。。。我是不是考虑换成IK了。。。。。。。。。
支持IK的给我几点介意
速度不是分词器的核心啊,不建议因为速度去更换一个分词器。
IK在后期考虑用速度换效果。实际上分词效果才是关键的问题
哦 先谢谢 林老师的快速答复!
这里 还有个小问题 假如我用IK + lucene3.3 或者 solr1.4 引用hadoop都没有问题的吧。。。。庖丁很久没有更新了 今后肯定会被超越 目前IK分词效果已经超过庖丁了吗?
23 楼
linliangyi2007
2011-07-29
Iloseyou 写道
4.性能优化,目前IK分词器的速度为约85万字/秒(1600K字节/S)
------------速度超过庖丁了。。。。。
现在使用庖丁。。。我是不是考虑换成IK了。。。。。。。。。
支持IK的给我几点介意
------------速度超过庖丁了。。。。。
现在使用庖丁。。。我是不是考虑换成IK了。。。。。。。。。
支持IK的给我几点介意
速度不是分词器的核心啊,不建议因为速度去更换一个分词器。
IK在后期考虑用速度换效果。实际上分词效果才是关键的问题
22 楼
Iloseyou
2011-07-28
4.性能优化,目前IK分词器的速度为约85万字/秒(1600K字节/S)
------------速度超过庖丁了。。。。。
现在使用庖丁。。。我是不是考虑换成IK了。。。。。。。。。
支持IK的给我几点介意
------------速度超过庖丁了。。。。。
现在使用庖丁。。。我是不是考虑换成IK了。。。。。。。。。
支持IK的给我几点介意
21 楼
linliangyi2007
2011-07-24
vk14311 写道
不知道是否有此问题。main.dic的第一行好像是无效的。无论我输入什么词组都不会按照其进行分词,除了第一行以外的都词组都可以进行分词。
那说明这个dic文件时有BOM的UTF-8,需要另存为无BOM的UTF-8格式,那么第一行就OK了
20 楼
vk14311
2011-07-23
不知道是否有此问题。main.dic的第一行好像是无效的。无论我输入什么词组都不会按照其进行分词,除了第一行以外的都词组都可以进行分词。
19 楼
hollo08
2011-06-29
hollo08 写道
现在使用的是tomcat5,IKAnalyzer 3.2.5还是出现了java.lang.NoClassDefFoundError: Could not initialize class org.wltea.analyzer.dic.Dictionary这个问题。
已经将ext_stopword.dic,IKAnalyzer.cfg.xml放在了classes文件件下。
IKAnalyzer.cfg.xml的内容是
<?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">/mydict.dic; /mypack/mydict2.dic ; /com/mycompany/dic/mydict3.dic ;</entry>
-->
<!--用户可以在这里配置自己的扩展停止词字典
<entry key="ext_stopwords">/ext_stopword.dic</entry>
-->
</properties>
已经将ext_stopword.dic,IKAnalyzer.cfg.xml放在了classes文件件下。
IKAnalyzer.cfg.xml的内容是
<?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">/mydict.dic; /mypack/mydict2.dic ; /com/mycompany/dic/mydict3.dic ;</entry>
-->
<!--用户可以在这里配置自己的扩展停止词字典
<entry key="ext_stopwords">/ext_stopword.dic</entry>
-->
</properties>
换成3.2.8版本就好了
18 楼
hollo08
2011-06-24
现在使用的是tomcat5,IKAnalyzer 3.2.5还是出现了java.lang.NoClassDefFoundError: Could not initialize class org.wltea.analyzer.dic.Dictionary这个问题。
已经将ext_stopword.dic,IKAnalyzer.cfg.xml放在了classes文件件下。
IKAnalyzer.cfg.xml的内容是
<?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">/mydict.dic; /mypack/mydict2.dic ; /com/mycompany/dic/mydict3.dic ;</entry>
-->
<!--用户可以在这里配置自己的扩展停止词字典
<entry key="ext_stopwords">/ext_stopword.dic</entry>
-->
</properties>
已经将ext_stopword.dic,IKAnalyzer.cfg.xml放在了classes文件件下。
IKAnalyzer.cfg.xml的内容是
<?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">/mydict.dic; /mypack/mydict2.dic ; /com/mycompany/dic/mydict3.dic ;</entry>
-->
<!--用户可以在这里配置自己的扩展停止词字典
<entry key="ext_stopwords">/ext_stopword.dic</entry>
-->
</properties>
17 楼
linliangyi2007
2011-05-29
aunox 写道
报错误:
使用jar列表:
IKAnalyzer3.2.3Stable.jar
lucene-core-3.0.2.jar
java代码如下:
--------------------------------------------------------------------
--------------------------------------------------------------------
控制台错误提示:
--------------------------------------------------------------------
Exception in thread "main" java.lang.IllegalArgumentException: This AttributeSource does not have the attribute 'org.apache.lucene.analysis.tokenattributes.TypeAttribute'.
at org.apache.lucene.util.AttributeSource.getAttribute(AttributeSource.java:277)
at TestIKAnalyzer.main(TestIKAnalyzer.java:27)
--------------------------------------------------------------------
若其中使用jar包lucene-core-3.0.2.jar替换成lucene-core-2.9.1.jar,则程序运行正常。
请您确认。
使用jar列表:
IKAnalyzer3.2.3Stable.jar
lucene-core-3.0.2.jar
java代码如下:
--------------------------------------------------------------------
import java.io.IOException; import java.io.StringReader; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.TermAttribute; import org.apache.lucene.analysis.tokenattributes.TypeAttribute; import org.wltea.analyzer.lucene.IKAnalyzer; public class TestIKAnalyzer { public static void main(String[] args) throws IOException { Analyzer analyzer = new IKAnalyzer(); TokenStream tokenStream = analyzer.tokenStream("", new StringReader( "永和服装饰品有限公司")); // 2.x写法 3.0之后不支持了 // Token token = new Token(); // // while (tokenStream.next(token) != null) { // System.out.println(token.term()); // } // 3.x的写法 TermAttribute termAtt = tokenStream.getAttribute(TermAttribute.class); TypeAttribute typeAtt = tokenStream.getAttribute(TypeAttribute.class); while (tokenStream.incrementToken()) { System.out.print(termAtt.term()); System.out.print(' '); System.out.println(typeAtt.type()); } } }
--------------------------------------------------------------------
控制台错误提示:
--------------------------------------------------------------------
Exception in thread "main" java.lang.IllegalArgumentException: This AttributeSource does not have the attribute 'org.apache.lucene.analysis.tokenattributes.TypeAttribute'.
at org.apache.lucene.util.AttributeSource.getAttribute(AttributeSource.java:277)
at TestIKAnalyzer.main(TestIKAnalyzer.java:27)
--------------------------------------------------------------------
若其中使用jar包lucene-core-3.0.2.jar替换成lucene-core-2.9.1.jar,则程序运行正常。
请您确认。
这只能是你的运行环境中jar版本混乱的问题,跟IK编码无关。
16 楼
aunox
2011-05-27
报错误:
使用jar列表:
IKAnalyzer3.2.3Stable.jar
lucene-core-3.0.2.jar
java代码如下:
--------------------------------------------------------------------
--------------------------------------------------------------------
控制台错误提示:
--------------------------------------------------------------------
Exception in thread "main" java.lang.IllegalArgumentException: This AttributeSource does not have the attribute 'org.apache.lucene.analysis.tokenattributes.TypeAttribute'.
at org.apache.lucene.util.AttributeSource.getAttribute(AttributeSource.java:277)
at TestIKAnalyzer.main(TestIKAnalyzer.java:27)
--------------------------------------------------------------------
若其中使用jar包lucene-core-3.0.2.jar替换成lucene-core-2.9.1.jar,则程序运行正常。
请您确认。
使用jar列表:
IKAnalyzer3.2.3Stable.jar
lucene-core-3.0.2.jar
java代码如下:
--------------------------------------------------------------------
import java.io.IOException; import java.io.StringReader; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.TermAttribute; import org.apache.lucene.analysis.tokenattributes.TypeAttribute; import org.wltea.analyzer.lucene.IKAnalyzer; public class TestIKAnalyzer { public static void main(String[] args) throws IOException { Analyzer analyzer = new IKAnalyzer(); TokenStream tokenStream = analyzer.tokenStream("", new StringReader( "永和服装饰品有限公司")); // 2.x写法 3.0之后不支持了 // Token token = new Token(); // // while (tokenStream.next(token) != null) { // System.out.println(token.term()); // } // 3.x的写法 TermAttribute termAtt = tokenStream.getAttribute(TermAttribute.class); TypeAttribute typeAtt = tokenStream.getAttribute(TypeAttribute.class); while (tokenStream.incrementToken()) { System.out.print(termAtt.term()); System.out.print(' '); System.out.println(typeAtt.type()); } } }
--------------------------------------------------------------------
控制台错误提示:
--------------------------------------------------------------------
Exception in thread "main" java.lang.IllegalArgumentException: This AttributeSource does not have the attribute 'org.apache.lucene.analysis.tokenattributes.TypeAttribute'.
at org.apache.lucene.util.AttributeSource.getAttribute(AttributeSource.java:277)
at TestIKAnalyzer.main(TestIKAnalyzer.java:27)
--------------------------------------------------------------------
若其中使用jar包lucene-core-3.0.2.jar替换成lucene-core-2.9.1.jar,则程序运行正常。
请您确认。
15 楼
linliangyi2007
2011-05-20
smartmac 写道
请问下林老师,我lucene3里用IKAnalyzer建索引,比用StandardAnalyzer建索引要慢好多,比如说前者用2s,后者要用6s,请问这是正常的吗?
你这个测试是放在main方法里面的吧,执行的时候,每次要启动jvm,ik要载入字典的。
你这个测试99.999%时间不是测试IK分词,而是测试字典加载。
14 楼
smartmac
2011-05-20
请问下林老师,我lucene3里用IKAnalyzer建索引,比用StandardAnalyzer建索引要慢好多,比如说前者用2s,后者要用6s,请问这是正常的吗?
13 楼
linliangyi2007
2011-05-19
thxg 写道
请教林老师一个问题,就是词干提取方面。我不知道IK有没有做这方面的处理,今天追踪 smartcn 时才发现 Lucene 自己带有一个词干提取功能,并且即使单独使用 smartcn 也会经过这一步过滤,但奇怪的是它把 iPhone 提取成了 iphon ,让人哭笑不得。我在lucene群组里发了一帖:
http://lucene-group.group.iteye.com/group/topic/26037
林老师能否指教一二?
http://lucene-group.group.iteye.com/group/topic/26037
林老师能否指教一二?
IK目前对英文处理相对简单,没有词干处理功能
12 楼
thxg
2011-05-19
请教林老师一个问题,就是词干提取方面。我不知道IK有没有做这方面的处理,今天追踪 smartcn 时才发现 Lucene 自己带有一个词干提取功能,并且即使单独使用 smartcn 也会经过这一步过滤,但奇怪的是它把 iPhone 提取成了 iphon ,让人哭笑不得。我在lucene群组里发了一帖:
http://lucene-group.group.iteye.com/group/topic/26037
林老师能否指教一二?
http://lucene-group.group.iteye.com/group/topic/26037
林老师能否指教一二?
11 楼
greatrobert
2011-04-12
请问下林老师,lucene的检索词等同,即改变检索词的顺序,检索结果不变这个要怎么关掉?现在需要做一个拼音搜索,比如搜索“我们”时输入“wo men”可以搜到,输入“men wo”也能搜到
10 楼
kjj
2011-04-03
用上了,这个我得顶 一下!!
9 楼
xutao5641745
2011-03-23
xutao5641745 写道
linliangyi2007 写道
xutao5641745 写道
林老师,请问你这个与Spring集成的时候怎么写?还有,他会不会导致与Spring不兼容,,,他会不会引发程序的内存溢出?
最近项目老down 好像程序也没加啥功能,就用了你的这个分词,是不是我的程序没有配置正确呀?
最近项目老down 好像程序也没加啥功能,就用了你的这个分词,是不是我的程序没有配置正确呀?
IK拥有27万词的词典,需要占用27m的内存空间,因此你要注意你的jvm内存设置,默认情况下jvm只有64M,这个对于现有的服务,是很不够的。
Spring作为一个IoC容器,应该没有什么不兼容的说法吧。
另外,别用IKQueryParser来做分词(之前有人这么做过),它是用来解析短文本的(用来解析搜索关键字的)。
恩。。。谢谢你!
我先按你说的做一下,,,
我是用IKSegmentation 做分词的。。。。。。
List<String> list = new ArrayList<String>(); StringReader input = new StringReader(keyword); IKSegmentation ikSeg = new IKSegmentation(input, true); Lexeme lexeme; try { while((lexeme = ikSeg.next())!= null){ System.out.println(lexeme.getLexemeText()); list.add(lexeme.getLexemeText()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list;
谢谢林老师,,,我测试了,这里的分词没有问题。。。。而且你的分词也不会导致内存溢出!
8 楼
xutao5641745
2011-03-21
linliangyi2007 写道
xutao5641745 写道
林老师,请问你这个与Spring集成的时候怎么写?还有,他会不会导致与Spring不兼容,,,他会不会引发程序的内存溢出?
最近项目老down 好像程序也没加啥功能,就用了你的这个分词,是不是我的程序没有配置正确呀?
最近项目老down 好像程序也没加啥功能,就用了你的这个分词,是不是我的程序没有配置正确呀?
IK拥有27万词的词典,需要占用27m的内存空间,因此你要注意你的jvm内存设置,默认情况下jvm只有64M,这个对于现有的服务,是很不够的。
Spring作为一个IoC容器,应该没有什么不兼容的说法吧。
另外,别用IKQueryParser来做分词(之前有人这么做过),它是用来解析短文本的(用来解析搜索关键字的)。
恩。。。谢谢你!
我先按你说的做一下,,,
我是用IKSegmentation 做分词的。。。。。。
List<String> list = new ArrayList<String>(); StringReader input = new StringReader(keyword); IKSegmentation ikSeg = new IKSegmentation(input, true); Lexeme lexeme; try { while((lexeme = ikSeg.next())!= null){ System.out.println(lexeme.getLexemeText()); list.add(lexeme.getLexemeText()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list;
7 楼
linliangyi2007
2011-03-20
xutao5641745 写道
林老师,请问你这个与Spring集成的时候怎么写?还有,他会不会导致与Spring不兼容,,,他会不会引发程序的内存溢出?
最近项目老down 好像程序也没加啥功能,就用了你的这个分词,是不是我的程序没有配置正确呀?
最近项目老down 好像程序也没加啥功能,就用了你的这个分词,是不是我的程序没有配置正确呀?
IK拥有27万词的词典,需要占用27m的内存空间,因此你要注意你的jvm内存设置,默认情况下jvm只有64M,这个对于现有的服务,是很不够的。
Spring作为一个IoC容器,应该没有什么不兼容的说法吧。
另外,别用IKQueryParser来做分词(之前有人这么做过),它是用来解析短文本的(用来解析搜索关键字的)。
6 楼
xutao5641745
2011-03-19
林老师,请问你这个与Spring集成的时候怎么写?还有,他会不会导致与Spring不兼容,,,他会不会引发程序的内存溢出?
最近项目老down 好像程序也没加啥功能,就用了你的这个分词,是不是我的程序没有配置正确呀?
最近项目老down 好像程序也没加啥功能,就用了你的这个分词,是不是我的程序没有配置正确呀?
5 楼
linliangyi2007
2011-03-19
chrislusf 写道
NoClassFoundError on this line:
termAtt = addAttribute(TermAttribute.class);
TermAttribute has been removed on recent Lucene releases.
termAtt = addAttribute(TermAttribute.class);
TermAttribute has been removed on recent Lucene releases.
请注意标题,for lucene3.x的,你用的估计是4.0的吧,那东东没稳定,api还在修改中呢!!
很少见lucene这样每次大版本更新都搞的不向下兼容的,真应该bs之~~
发表评论
-
来自开源支持者的第一笔捐赠
2013-01-09 21:15 57812013年1月9号,一个平凡而又不平常的日子! IK中文分词 ... -
发布 IK Analyzer 2012 FF 版本
2012-10-23 17:50 25081首先感谢大家对IK分词器的关注。 最近一段时间正式公司事务最 ... -
发布 IK Analyzer 2012 版本
2012-03-08 11:23 36179新版本改进: 支持分词歧义处理 支持数量词合并 词典支持中英 ... -
CSDN发生严重用户账号泄密事件
2011-12-21 19:21 2566之前有在CSDN注册过的兄弟们,注意了。。。 如果你的邮箱, ... -
一个隐形的java int溢出
2011-08-30 09:44 7560故事的背景: 笔者最近在做一个类SNS的项目,其中 ... -
雷军 :互联网创业的葵花宝典
2011-05-04 10:35 3596博主评: 这片博客很短 ... -
Luci-mint站内搜索实测
2011-04-02 16:18 4141关于Luci-mint 服务器硬 ... -
TIPS - XML CDATA中的非法字符处理
2011-02-17 15:03 3305XML解析过程中,常遇见CDATA中存在非法字符,尤其在火星文 ... -
对Cassandra的初体验
2010-10-13 17:58 9137作为“云计算”时代的架构设计人员而言,不懂K-V库会被 ... -
Spring + iBatis 的多库横向切分简易解决思路
2010-10-11 13:43 93561.引言 笔者最近在做一个互联网的“类SNS”应用,应用 ... -
发布 IK Analyzer 3.2.5 稳定版 for Lucene3.0
2010-09-08 14:43 5823新版本IKAnnlyzer3.2.8已发布! 地址: http ... -
关于Lucene3.0.1 QueryParser的一个错误
2010-05-21 21:33 2129表达式1: 引用 id:"1231231" ... -
发布 IK Analyzer 3.2.3 稳定版 for Lucene3.0
2010-05-15 14:13 6719IK Analyzer 3.2.3版本修订 在3.2.0版 ... -
windows平台上的nginx使用
2010-01-28 17:13 3407转载自:http://nginx.org/en/docs/wi ... -
发布IKAnnlyzer3.2.0稳定版 for Lucene3.0
2009-12-07 09:27 9580最新3.2.5版本已经推出,http://linliangyi ... -
在Tomcat下以JNDI方式发布JbossCache
2009-12-04 10:57 3831前言: 看过JbossCache的开发手册,发现在Jb ... -
Spring AOP小例子
2009-11-16 10:35 3405PS: 要注明一下,这个是转载滴,之前漏了说鸟,汗死 这里给 ... -
ActiveMQ 5.X 与 Tomcat 集成一(JNDI部署)
2009-11-10 15:15 5650原文地址:http://activemq.apache.org ... -
发布IKAnalyzer中文分词器V3.1.6GA
2009-11-08 23:10 11858IKAnalyzer3.2.0稳定版已经发布,支持Lucene ... -
设计模式感悟
2009-11-07 17:57 3696最近又把以前学习的模式过了一遍,感觉模式不是学出来的,是悟出来 ...
相关推荐
在压缩包内的 "IKAnalyzer3.2.8_jar_zip" 文件,可能是一个错误的文件名,因为正常情况下,IKAnalyzer的jar文件应该是直接命名为 "IKAnalyzer3.2.8.jar",而不会带有 "_jar_zip" 的后缀。这可能是上传时的误操作或者...
总之,IKAnalyzer3.2.8是一款强大的中文分词工具,它的出现极大地推动了中文信息处理技术的发展,为开发者提供了高效、便捷的中文分词解决方案。通过不断的优化和升级,IKAnalyzer将继续在中文信息处理领域发挥重要...
通过深入研究IKAnalyzer3.2.8的源码,开发者可以了解中文分词的基本原理,学习如何优化分词算法,以及如何在实际项目中与搜索引擎框架集成,提升信息检索系统的效能。同时,源码阅读也是提升Java编程技能和理解软件...
### 关于IKAnalyzer3.2.8扩展词典配置的个人心得和意见 #### 一、IKAnalyzer简介 IKAnalyzer是一款高性能的基于Java语言的中文分词组件,它被广泛应用于搜索引擎、内容管理系统以及各类需要进行中文文本处理的应用...
IK Analyzer 3.2.8特性 采用了特有的“正吐迭代最细粒度切分算法“,支持细粒度和最大词长两种切分模式;具有83万字/秒(1600KB/S)的高速处理能力。 采用了多子处理器分析模式,支持:英文字母、数字、中文词汇等...
IK Analyzer是基于lucene实现的分词开源框架 需要在项目中引入: IKAnalyzer.cfg.xml IKAnalyzer2012.jar lucene-core-4.3.0.jar stopword.dic
IKAnalyzer 的下载地址为:http://ik-analyzer.googlecode.com/files/IKAnalyzer3.2.8%20bin.zip。我们可以将其解压到 /usr/local/ 目录下,然后将其添加到 Solr 的配置文件中。 六、中文分词配置 在 Solr 的配置...
IKAnalyzer3.2.8版本支持两种不同的分词方式:细粒度切分和最大词长切分。以下是一些具体的例子: - **文本原文1**:“IKAnalyzer是一个开源的,基于java诧言开发的轻量级的中文分词工具包。从2006年12月推出1.0版...
3. IKAnalyzer3.2.8_bin.zip:这是版本号为3.2.8的二进制包,"bin"通常包含了可执行文件和其他运行所需文件,适合直接部署使用。 在使用这些IKAnalyzer版本时,你需要根据你的Solr版本和实际需求选择合适的版本进行...
#### 一、IKAnalyzer3.2.8系统架构 IKAnalyzer3.2.8是一款基于Java语言编写的开源分词组件,广泛应用于搜索引擎、文本处理等领域。它能够高效地对中文文本进行分词处理,并支持自定义词典扩展等功能。本文档旨在...
说明:依赖jar包:lucene-core-2.3.2.jar、IKAnalyzer3.2.8.jar。 一、LuceneUtil 工具类代码: package com.zcm.lucene; import java.io.File; import java.io.IOException; import java.io.StringReader; import...
尝试使用Nutch 0.9和IKAnalyzer 3.1.6GA组合,但由于版本兼容性问题导致失败,因此改用Nutch 1.2和IKAnalyzer 3.2.8,并将Tomcat升级到6.0.35版本。 在Nutch 1.2中集成IKAnalyzer,需要修改NutchAnalysis.jj文件,...
2. 集成IK分词器:在Lucene中集成IK,首先需要将IKAnalyzer的jar包添加到项目的类路径中。然后,在创建Analyzer时,使用IKAnalyzer类替换默认的Analyzer,这样在索引和搜索过程中就会使用IK进行分词。 三、使用步骤...
IKAnalyzer分词 2012版不支持,采用3.2.8版 在使用2012版时异常:ClassNotFoundException: org.apache.lucene.analysis.tokenattributes.CharTermAttribute 庖丁分词 使用 paoding-analysis-2.0.4-beta.zip 版时...
为了解决这个问题,我们转向了IKAnalyzer 3.2.8版本,并与Lucene 3.1.0版本搭配使用。在新的`analysisByIK3Point2`方法中,虽然基本步骤相似,但需要注意的是,与Lucene 2.x版本相比,部分接口名称和类型有所变化,...
IKAnalyzer3.2.8.jar lucene-analyzers-3.5.0.jar lucene-core-3.6.1.jar lucene-highlighter-3.5.0.jar lucene-memory-3.5.0.jar
自2006年首次发布以来,IKAnalyzer已经历了多个版本的迭代和完善,最新版本为3.2.8版。该工具包最初设计是为了与Lucene搜索引擎集成使用,但随着时间的发展,IKAnalyzer已经能够作为一个独立的Java分词组件使用。 #...
- 将`IKAnalyzer3.2.8.jar`文件复制到`tomcat-7.0.14\webapps\solr\WEB-INF\lib`目录下。 - **配置Schema文件**: - 打开`solr`目录下的`schema.xml`文件,在`<Types>`部分添加自定义的`TextField`类型,并指定...
Lucene开发所需其他架包和中文分词器(solr3.5+IKAnalyzer3.2.8),没有加入Lucene包,需要可去http://archive.apache.org/dist/lucene/java/4.10.3/下载相应包。