- 浏览: 1012993 次
- 性别:
- 来自: 福州
最新评论
-
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 2012特性
分词效果示例
IK Analyzer 2012版本支持 细粒度切分 和 智能切分,以下是两种切分方式的演示样例。
文本原文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:
张三说的确实在理
智能分词结果:
张三 | 说的 | 确实 | 在理
最细粒度分词结果:
张三 | 三 | 说的 | 的确 | 的 | 确实 | 实在 | 在理
文本原文3
公路局正在治理解放大道路面积水问题
智能分词结果:
公路局 | 正在 | 治理 | 解放 | 大道 | 路面 | 积水 | 问题
最细粒度分词结果:
公路局 | 公路 | 路局 | 正在 | 治理 | 理解 | 解放 | 放大 | 大道 | 道路 | 路面 | 面积 | 积水 | 问题
文本原文4
据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发生的里氏6.2级地震已经造成至少5427人死亡,20000余人受伤,近20万人无家可归。
智能分词结果:
据 | 路透社 | 报道 | 印度尼西亚 | 社会 | 事务部 | 一 | 官员 | 星期二 | 29日 | 表示 | 日 | 惹 | 市 | 附近 | 当地时间 | 27日 | 晨 | 5时 | 53分 | 发生 | 的 | 里氏 | 6.2级 | 地震 | 已经 | 造成 | 至少 | 5427人 | 死亡 | 20000 | 余人 | 受伤 | 近 | 20 | 万人 | 无家可归
最细粒度分词结果:
据 | 路透社 | 路透 | 社 | 报道 | 印度尼西亚 | 印度 | 尼 | 西亚 | 社会事务 | 社会 | 事务部 | 事务 | 部 | 一 | 官员 | 星期二 | 星期 | 二 | 29 | 日 | 表示 | 日 | 惹 | 市 | 附近 | 当地时间 | 当地 | 时间 | 27 | 日 | 晨 | 5 | 时 | 53 | 分发 | 分 | 发生 | 发 | 生 | 的 | 里氏 | 6.2 | 级 | 地震 | 已经 | 造成 | 至少 | 5427 | 人 | 死亡 | 20000 | 余人 | 受伤 | 近 | 20 | 万人 | 万 | 人 | 无家可归
GoogleCode下载:
http://code.google.com/p/ik-analyzer/downloads/list
我也报这个错误....很无奈..(我也是JDK1.5...难道真的是这个原因吗?....林兄有木有办法呀..提个意见..)
针对这个问题,只要把JDK1.6的类主要代码摘出来就可以了。我帮你摘了一下,只是我没有测试,你试一下吧。
步骤:
1、在源码中建立一个Arrays类。
2、将源码中报错的导入import java.util.Arrays; 转变为你添加的路径应该就可以了。
public class Arrays {
public static int binarySearch(Object[] a, int fromIndex, int toIndex, Object key) {
rangeCheck(a.length, fromIndex, toIndex);
return binarySearch0(a, fromIndex, toIndex, key);
}
private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
if (fromIndex > toIndex)
throw new IllegalArgumentException("fromIndex(" + fromIndex +
") > toIndex(" + toIndex+")");
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException(fromIndex);
if (toIndex > arrayLen)
throw new ArrayIndexOutOfBoundsException(toIndex);
}
private static int binarySearch0(Object[] a, int fromIndex, int toIndex,Object key) {
int low = fromIndex;
int high = toIndex - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
Comparable midVal = (Comparable)a[mid];
int cmp = midVal.compareTo(key);
if (cmp < 0)
low = mid + 1;
else if (cmp > 0)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}
}
好像还不能支持吧,期待楼主回答。
我帮忙改了一个能用在solr上的版本,源码在http://code.google.com/p/ik-analyzer/issues/detail?id=34,大家可以参考看看
目前没有词性表,主要是没有这块资料,IK的词典格式加上词性应该是比较简单的改动,你可以看一下源码
谢谢您的回复,那我试着加一下词性看看
目前没有词性表,主要是没有这块资料,IK的词典格式加上词性应该是比较简单的改动,你可以看一下源码
好像还不能支持吧,期待楼主回答。
不能,等出正式版了再跟进,lucene项目组的api设计严重不向下兼容,让人讨厌啊
好像还不能支持吧,期待楼主回答。
使用JDK 1.6版本就好,旧版本的jdk不包含这个方法
要是开源中国在福州举办,我就去,哈哈
我也报这个错误....很无奈..(我也是JDK1.5...难道真的是这个原因吗?....林兄有木有办法呀..提个意见..)
智能分词
- 支持分词歧义处理
- 支持数量词合并
- 词典支持中英文混合词语,如:Hold住
IK Analyzer 2012特性
- 采用了特有的“正向迭代最细粒度切分算法“,支持细粒度和智能分词两种切分模式;
- 在系统环境:Core2 i7 3.4G双核,4G内存,window 7 64位, Sun JDK 1.6_29 64位 普通pc环境测试,IK2012具有160万字/秒(3000KB/S)的高速处理能力。
- 2012版本的智能分词模式支持简单的分词排歧义处理和数量词合并输出。
- 采用了多子处理器分析模式,支持:英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符
- 优化的词典存储,更小的内存占用。支持用户词典扩展定义。特别的,在2012版本,词典支持中文,英文,数字混合词语。
分词效果示例
IK Analyzer 2012版本支持 细粒度切分 和 智能切分,以下是两种切分方式的演示样例。
文本原文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:
张三说的确实在理
智能分词结果:
张三 | 说的 | 确实 | 在理
最细粒度分词结果:
张三 | 三 | 说的 | 的确 | 的 | 确实 | 实在 | 在理
文本原文3
公路局正在治理解放大道路面积水问题
智能分词结果:
公路局 | 正在 | 治理 | 解放 | 大道 | 路面 | 积水 | 问题
最细粒度分词结果:
公路局 | 公路 | 路局 | 正在 | 治理 | 理解 | 解放 | 放大 | 大道 | 道路 | 路面 | 面积 | 积水 | 问题
文本原文4
据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发生的里氏6.2级地震已经造成至少5427人死亡,20000余人受伤,近20万人无家可归。
智能分词结果:
据 | 路透社 | 报道 | 印度尼西亚 | 社会 | 事务部 | 一 | 官员 | 星期二 | 29日 | 表示 | 日 | 惹 | 市 | 附近 | 当地时间 | 27日 | 晨 | 5时 | 53分 | 发生 | 的 | 里氏 | 6.2级 | 地震 | 已经 | 造成 | 至少 | 5427人 | 死亡 | 20000 | 余人 | 受伤 | 近 | 20 | 万人 | 无家可归
最细粒度分词结果:
据 | 路透社 | 路透 | 社 | 报道 | 印度尼西亚 | 印度 | 尼 | 西亚 | 社会事务 | 社会 | 事务部 | 事务 | 部 | 一 | 官员 | 星期二 | 星期 | 二 | 29 | 日 | 表示 | 日 | 惹 | 市 | 附近 | 当地时间 | 当地 | 时间 | 27 | 日 | 晨 | 5 | 时 | 53 | 分发 | 分 | 发生 | 发 | 生 | 的 | 里氏 | 6.2 | 级 | 地震 | 已经 | 造成 | 至少 | 5427 | 人 | 死亡 | 20000 | 余人 | 受伤 | 近 | 20 | 万人 | 万 | 人 | 无家可归
GoogleCode下载:
http://code.google.com/p/ik-analyzer/downloads/list
评论
79 楼
aixuebo
2012-08-31
林兄,您好。我这边最近研究源码的时候,有两个类一直没看太懂,希望您给点意见,解释解释这两个类的主要作用,以及代码难点:
LexemePath类、QuickSortSet类。
LexemePath类、QuickSortSet类。
78 楼
aixuebo
2012-08-31
judasn 写道
java_bbs 写道
IKAnalyzer 2012版本不兼容JDK1.5版本的问题,希望博主能解决一下,修复这个问题应该比较简单的,谢谢,报错信息如下:
java.lang.NoSuchMethodError: java.util.Arrays.binarySearch([Ljava/lang/Object;IILjava/lang/Object;)I
at org.wltea.analyzer.dic.DictSegment.lookforSegment(DictSegment.java:229)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:199)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:170)
at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:209)
at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:69)
at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:86)
at org.wltea.analyzer.core.IKSegmenter.init(IKSegmenter.java:85)
at org.wltea.analyzer.core.IKSegmenter.<init>(IKSegmenter.java:65)
at org.wltea.analyzer.lucene.IKTokenizer.<init>(IKTokenizer.java:63)
at org.wltea.analyzer.lucene.IKAnalyzer.tokenStream(IKAnalyzer.java:71)
java.lang.NoSuchMethodError: java.util.Arrays.binarySearch([Ljava/lang/Object;IILjava/lang/Object;)I
at org.wltea.analyzer.dic.DictSegment.lookforSegment(DictSegment.java:229)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:199)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:170)
at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:209)
at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:69)
at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:86)
at org.wltea.analyzer.core.IKSegmenter.init(IKSegmenter.java:85)
at org.wltea.analyzer.core.IKSegmenter.<init>(IKSegmenter.java:65)
at org.wltea.analyzer.lucene.IKTokenizer.<init>(IKTokenizer.java:63)
at org.wltea.analyzer.lucene.IKAnalyzer.tokenStream(IKAnalyzer.java:71)
我也报这个错误....很无奈..(我也是JDK1.5...难道真的是这个原因吗?....林兄有木有办法呀..提个意见..)
针对这个问题,只要把JDK1.6的类主要代码摘出来就可以了。我帮你摘了一下,只是我没有测试,你试一下吧。
步骤:
1、在源码中建立一个Arrays类。
2、将源码中报错的导入import java.util.Arrays; 转变为你添加的路径应该就可以了。
public class Arrays {
public static int binarySearch(Object[] a, int fromIndex, int toIndex, Object key) {
rangeCheck(a.length, fromIndex, toIndex);
return binarySearch0(a, fromIndex, toIndex, key);
}
private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
if (fromIndex > toIndex)
throw new IllegalArgumentException("fromIndex(" + fromIndex +
") > toIndex(" + toIndex+")");
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException(fromIndex);
if (toIndex > arrayLen)
throw new ArrayIndexOutOfBoundsException(toIndex);
}
private static int binarySearch0(Object[] a, int fromIndex, int toIndex,Object key) {
int low = fromIndex;
int high = toIndex - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
Comparable midVal = (Comparable)a[mid];
int cmp = midVal.compareTo(key);
if (cmp < 0)
low = mid + 1;
else if (cmp > 0)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}
}
77 楼
leixxx
2012-08-24
去掉 doc.add(new Field("content",new FileReader(fi)));
就可以成功创建索引了 这是个bug么?
就可以成功创建索引了 这是个bug么?
76 楼
leixxx
2012-08-24
你好 我 在建立索引时 抛出了数组越界的问题 您能帮我解决下吗?
错误信息是:
代码为:
错误信息是:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3072 at org.wltea.analyzer.core.AnalyzeContext.moveCursor(AnalyzeContext.java:159) at org.wltea.analyzer.core.IKSegmenter.next(IKSegmenter.java:142) at org.wltea.analyzer.lucene.IKTokenizer.incrementToken(IKTokenizer.java:73) at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:185) at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:278) at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:766) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:2066) at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:2040) at com.jsu.mybaidu.search.BuildIndex.createIndex(BuildIndex.java:50) at com.jsu.mybaidu.search.BuildIndex.main(BuildIndex.java:89)
代码为:
public static void createIndex(){ IndexWriter writer=null; Analyzer analyzer = new IKAnalyzer(true); Directory directory = null; try { directory=FSDirectory.open(new File("d:/index")); IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_35, analyzer); iwConfig.setOpenMode(OpenMode.CREATE_OR_APPEND); writer = new IndexWriter(directory, iwConfig); Document doc = null; File f = new File("F:/CVS2/diary/a"); for (File fi : f.listFiles()) { doc=new Document(); doc.add(new Field("filename", fi.getName(), Field.Store.YES,Field.Index.ANALYZED)); doc.add(new Field("path", fi.getAbsolutePath(), Field.Store.YES,Field.Index.NOT_ANALYZED)); doc.add(new Field("content",new FileReader(fi))); writer.addDocument(doc); } } catch (CorruptIndexException e) { e.printStackTrace(); } catch (LockObtainFailedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(null!=writer){ try { writer.close(); } catch (CorruptIndexException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }
75 楼
heromal1
2012-08-11
请问不兼容jdk1.5的问题能否在新版本中解决一下呢?我看了评论还是有很多人遇到了这个问题的,虽然可以升级到jdk1.6,但由于历史原因还是有很多人是无法直接升级到jdk1.6的,希望可以尽快解决,非常感谢!
java.lang.NoSuchMethodError: java.util.Arrays.binarySearch
java.lang.NoSuchMethodError: java.util.Arrays.binarySearch
74 楼
windfall
2012-08-10
古叶斋 写道
wellwelldone 写道
请问,IK Analyzer 能否支持最新发布的solr 4 alpha
试了一下,好像有点问题,schema.xml加入IK分词的fieldType之后,
管理界面无法正常打开,提示出错
试了一下,好像有点问题,schema.xml加入IK分词的fieldType之后,
管理界面无法正常打开,提示出错
好像还不能支持吧,期待楼主回答。
我帮忙改了一个能用在solr上的版本,源码在http://code.google.com/p/ik-analyzer/issues/detail?id=34,大家可以参考看看
73 楼
clsgo
2012-08-06
linliangyi2007 写道
clsgo 写道
IK分词有词性吗?
做语义分析方面的项目,可以在ik的基础上改进吗?
谢谢
做语义分析方面的项目,可以在ik的基础上改进吗?
谢谢
目前没有词性表,主要是没有这块资料,IK的词典格式加上词性应该是比较简单的改动,你可以看一下源码
谢谢您的回复,那我试着加一下词性看看
72 楼
linliangyi2007
2012-08-01
clsgo 写道
IK分词有词性吗?
做语义分析方面的项目,可以在ik的基础上改进吗?
谢谢
做语义分析方面的项目,可以在ik的基础上改进吗?
谢谢
目前没有词性表,主要是没有这块资料,IK的词典格式加上词性应该是比较简单的改动,你可以看一下源码
71 楼
clsgo
2012-07-29
IK分词有词性吗?
做语义分析方面的项目,可以在ik的基础上改进吗?
谢谢
做语义分析方面的项目,可以在ik的基础上改进吗?
谢谢
70 楼
linliangyi2007
2012-07-27
古叶斋 写道
wellwelldone 写道
请问,IK Analyzer 能否支持最新发布的solr 4 alpha
试了一下,好像有点问题,schema.xml加入IK分词的fieldType之后,
管理界面无法正常打开,提示出错
试了一下,好像有点问题,schema.xml加入IK分词的fieldType之后,
管理界面无法正常打开,提示出错
好像还不能支持吧,期待楼主回答。
不能,等出正式版了再跟进,lucene项目组的api设计严重不向下兼容,让人讨厌啊
69 楼
古叶斋
2012-07-27
wellwelldone 写道
请问,IK Analyzer 能否支持最新发布的solr 4 alpha
试了一下,好像有点问题,schema.xml加入IK分词的fieldType之后,
管理界面无法正常打开,提示出错
试了一下,好像有点问题,schema.xml加入IK分词的fieldType之后,
管理界面无法正常打开,提示出错
好像还不能支持吧,期待楼主回答。
68 楼
linliangyi2007
2012-07-26
sukeqiang821021 写道
Caused by: java.lang.NoSuchMethodError: java.util.Arrays.binarySearch([Ljava/lang/Object;IILjava/lang/Object;)I
at org.wltea.analyzer.dic.DictSegment.lookforSegment(DictSegment.java:229)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:199)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:170)
at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:209)
at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:69)
at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:86)
at org.wltea.analyzer.core.IKSegmenter.init(IKSegmenter.java:85)
at org.wltea.analyzer.core.IKSegmenter.<init>(IKSegmenter.java:65)
at org.wltea.analyzer.lucene.IKTokenizer.<init>(IKTokenizer.java:63)
at org.wltea.analyzer.lucene.IKAnalyzer.reusableTokenStream(IKAnalyzer.java:78)
at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:132)
at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:276)
at org.apache.lucene.index.DocumentsWriter.updateDocuments(DocumentsWriter.java:852)
at org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:2167)
at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:2125)
at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:2109)
at com.dcx.index.service.DocIndexTask.indexWork(DocIndexTask.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:276)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:260)
... 3 more
这个怎么解决啊!!!!!!!!!!!!!!!
at org.wltea.analyzer.dic.DictSegment.lookforSegment(DictSegment.java:229)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:199)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:170)
at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:209)
at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:69)
at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:86)
at org.wltea.analyzer.core.IKSegmenter.init(IKSegmenter.java:85)
at org.wltea.analyzer.core.IKSegmenter.<init>(IKSegmenter.java:65)
at org.wltea.analyzer.lucene.IKTokenizer.<init>(IKTokenizer.java:63)
at org.wltea.analyzer.lucene.IKAnalyzer.reusableTokenStream(IKAnalyzer.java:78)
at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:132)
at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:276)
at org.apache.lucene.index.DocumentsWriter.updateDocuments(DocumentsWriter.java:852)
at org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:2167)
at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:2125)
at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:2109)
at com.dcx.index.service.DocIndexTask.indexWork(DocIndexTask.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:276)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:260)
... 3 more
这个怎么解决啊!!!!!!!!!!!!!!!
使用JDK 1.6版本就好,旧版本的jdk不包含这个方法
67 楼
sukeqiang821021
2012-07-26
Caused by: java.lang.NoSuchMethodError: java.util.Arrays.binarySearch([Ljava/lang/Object;IILjava/lang/Object;)I
at org.wltea.analyzer.dic.DictSegment.lookforSegment(DictSegment.java:229)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:199)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:170)
at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:209)
at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:69)
at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:86)
at org.wltea.analyzer.core.IKSegmenter.init(IKSegmenter.java:85)
at org.wltea.analyzer.core.IKSegmenter.<init>(IKSegmenter.java:65)
at org.wltea.analyzer.lucene.IKTokenizer.<init>(IKTokenizer.java:63)
at org.wltea.analyzer.lucene.IKAnalyzer.reusableTokenStream(IKAnalyzer.java:78)
at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:132)
at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:276)
at org.apache.lucene.index.DocumentsWriter.updateDocuments(DocumentsWriter.java:852)
at org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:2167)
at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:2125)
at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:2109)
at com.dcx.index.service.DocIndexTask.indexWork(DocIndexTask.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:276)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:260)
... 3 more
这个怎么解决啊!!!!!!!!!!!!!!!
at org.wltea.analyzer.dic.DictSegment.lookforSegment(DictSegment.java:229)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:199)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:170)
at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:209)
at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:69)
at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:86)
at org.wltea.analyzer.core.IKSegmenter.init(IKSegmenter.java:85)
at org.wltea.analyzer.core.IKSegmenter.<init>(IKSegmenter.java:65)
at org.wltea.analyzer.lucene.IKTokenizer.<init>(IKTokenizer.java:63)
at org.wltea.analyzer.lucene.IKAnalyzer.reusableTokenStream(IKAnalyzer.java:78)
at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:132)
at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:276)
at org.apache.lucene.index.DocumentsWriter.updateDocuments(DocumentsWriter.java:852)
at org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:2167)
at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:2125)
at org.apache.lucene.index.IndexWriter.addDocuments(IndexWriter.java:2109)
at com.dcx.index.service.DocIndexTask.indexWork(DocIndexTask.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:276)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:260)
... 3 more
这个怎么解决啊!!!!!!!!!!!!!!!
66 楼
crazyboy1998
2012-07-20
不好意思 请无视这个问题吧 刚看到问题所在了
crazyboy1998 写道
/**
* 歧义识别
* @param lexemeCell 歧义路径链表头
* @param fullTextLength 歧义路径文本长度
* @param option 候选结果路径
* @return
*/
private LexemePath judge(QuickSortSet.Cell lexemeCell , int fullTextLength){
//候选路径集合
TreeSet<LexemePath> pathOptions = new TreeSet<LexemePath>();
//候选结果路径
LexemePath option = new LexemePath();
//对crossPath进行一次遍历,同时返回本次遍历中有冲突的Lexeme栈
Stack<QuickSortSet.Cell> lexemeStack = this.forwardPath(lexemeCell , option);
//当前词元链并非最理想的,加入候选路径集合
pathOptions.add(option.copy());
//存在歧义词,处理
QuickSortSet.Cell c = null;
while(!lexemeStack.isEmpty()){
c = lexemeStack.pop();
//回滚词元链
this.backPath(c.getLexeme() , option);
//从歧义词位置开始,递归,生成可选方案
this.forwardPath(c , option);
pathOptions.add(option.copy());
}
//返回集合中的最优方案
return pathOptions.first();
}
我想咨询下,在这段歧义识别的代码中,您返回的是《 return pathOptions.first();》
那这段代码《
QuickSortSet.Cell c = null;
while(!lexemeStack.isEmpty()){
c = lexemeStack.pop();
//回滚词元链
this.backPath(c.getLexeme() , option);
//从歧义词位置开始,递归,生成可选方案
this.forwardPath(c , option);
pathOptions.add(option.copy());
}
》岂不是无效了,因为你在一开始就在这个TreeSet中放入了一个值pathOptions.add(option.copy()); 这个值永远是排在TreeSet的第一个的。
* 歧义识别
* @param lexemeCell 歧义路径链表头
* @param fullTextLength 歧义路径文本长度
* @param option 候选结果路径
* @return
*/
private LexemePath judge(QuickSortSet.Cell lexemeCell , int fullTextLength){
//候选路径集合
TreeSet<LexemePath> pathOptions = new TreeSet<LexemePath>();
//候选结果路径
LexemePath option = new LexemePath();
//对crossPath进行一次遍历,同时返回本次遍历中有冲突的Lexeme栈
Stack<QuickSortSet.Cell> lexemeStack = this.forwardPath(lexemeCell , option);
//当前词元链并非最理想的,加入候选路径集合
pathOptions.add(option.copy());
//存在歧义词,处理
QuickSortSet.Cell c = null;
while(!lexemeStack.isEmpty()){
c = lexemeStack.pop();
//回滚词元链
this.backPath(c.getLexeme() , option);
//从歧义词位置开始,递归,生成可选方案
this.forwardPath(c , option);
pathOptions.add(option.copy());
}
//返回集合中的最优方案
return pathOptions.first();
}
我想咨询下,在这段歧义识别的代码中,您返回的是《 return pathOptions.first();》
那这段代码《
QuickSortSet.Cell c = null;
while(!lexemeStack.isEmpty()){
c = lexemeStack.pop();
//回滚词元链
this.backPath(c.getLexeme() , option);
//从歧义词位置开始,递归,生成可选方案
this.forwardPath(c , option);
pathOptions.add(option.copy());
}
》岂不是无效了,因为你在一开始就在这个TreeSet中放入了一个值pathOptions.add(option.copy()); 这个值永远是排在TreeSet的第一个的。
65 楼
crazyboy1998
2012-07-20
/**
* 歧义识别
* @param lexemeCell 歧义路径链表头
* @param fullTextLength 歧义路径文本长度
* @param option 候选结果路径
* @return
*/
private LexemePath judge(QuickSortSet.Cell lexemeCell , int fullTextLength){
//候选路径集合
TreeSet<LexemePath> pathOptions = new TreeSet<LexemePath>();
//候选结果路径
LexemePath option = new LexemePath();
//对crossPath进行一次遍历,同时返回本次遍历中有冲突的Lexeme栈
Stack<QuickSortSet.Cell> lexemeStack = this.forwardPath(lexemeCell , option);
//当前词元链并非最理想的,加入候选路径集合
pathOptions.add(option.copy());
//存在歧义词,处理
QuickSortSet.Cell c = null;
while(!lexemeStack.isEmpty()){
c = lexemeStack.pop();
//回滚词元链
this.backPath(c.getLexeme() , option);
//从歧义词位置开始,递归,生成可选方案
this.forwardPath(c , option);
pathOptions.add(option.copy());
}
//返回集合中的最优方案
return pathOptions.first();
}
我想咨询下,在这段歧义识别的代码中,您返回的是《 return pathOptions.first();》
那这段代码《
QuickSortSet.Cell c = null;
while(!lexemeStack.isEmpty()){
c = lexemeStack.pop();
//回滚词元链
this.backPath(c.getLexeme() , option);
//从歧义词位置开始,递归,生成可选方案
this.forwardPath(c , option);
pathOptions.add(option.copy());
}
》岂不是无效了,因为你在一开始就在这个TreeSet中放入了一个值pathOptions.add(option.copy()); 这个值永远是排在TreeSet的第一个的。
* 歧义识别
* @param lexemeCell 歧义路径链表头
* @param fullTextLength 歧义路径文本长度
* @param option 候选结果路径
* @return
*/
private LexemePath judge(QuickSortSet.Cell lexemeCell , int fullTextLength){
//候选路径集合
TreeSet<LexemePath> pathOptions = new TreeSet<LexemePath>();
//候选结果路径
LexemePath option = new LexemePath();
//对crossPath进行一次遍历,同时返回本次遍历中有冲突的Lexeme栈
Stack<QuickSortSet.Cell> lexemeStack = this.forwardPath(lexemeCell , option);
//当前词元链并非最理想的,加入候选路径集合
pathOptions.add(option.copy());
//存在歧义词,处理
QuickSortSet.Cell c = null;
while(!lexemeStack.isEmpty()){
c = lexemeStack.pop();
//回滚词元链
this.backPath(c.getLexeme() , option);
//从歧义词位置开始,递归,生成可选方案
this.forwardPath(c , option);
pathOptions.add(option.copy());
}
//返回集合中的最优方案
return pathOptions.first();
}
我想咨询下,在这段歧义识别的代码中,您返回的是《 return pathOptions.first();》
那这段代码《
QuickSortSet.Cell c = null;
while(!lexemeStack.isEmpty()){
c = lexemeStack.pop();
//回滚词元链
this.backPath(c.getLexeme() , option);
//从歧义词位置开始,递归,生成可选方案
this.forwardPath(c , option);
pathOptions.add(option.copy());
}
》岂不是无效了,因为你在一开始就在这个TreeSet中放入了一个值pathOptions.add(option.copy()); 这个值永远是排在TreeSet的第一个的。
64 楼
linliangyi2007
2012-07-16
makemyownlife 写道
上次参加开源中国 ,要是您也来参加 并且做一个演讲就好了 。
要是开源中国在福州举办,我就去,哈哈
63 楼
makemyownlife
2012-07-12
上次参加开源中国 ,要是您也来参加 并且做一个演讲就好了 。
62 楼
judasn
2012-07-12
java_bbs 写道
IKAnalyzer 2012版本不兼容JDK1.5版本的问题,希望博主能解决一下,修复这个问题应该比较简单的,谢谢,报错信息如下:
java.lang.NoSuchMethodError: java.util.Arrays.binarySearch([Ljava/lang/Object;IILjava/lang/Object;)I
at org.wltea.analyzer.dic.DictSegment.lookforSegment(DictSegment.java:229)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:199)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:170)
at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:209)
at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:69)
at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:86)
at org.wltea.analyzer.core.IKSegmenter.init(IKSegmenter.java:85)
at org.wltea.analyzer.core.IKSegmenter.<init>(IKSegmenter.java:65)
at org.wltea.analyzer.lucene.IKTokenizer.<init>(IKTokenizer.java:63)
at org.wltea.analyzer.lucene.IKAnalyzer.tokenStream(IKAnalyzer.java:71)
java.lang.NoSuchMethodError: java.util.Arrays.binarySearch([Ljava/lang/Object;IILjava/lang/Object;)I
at org.wltea.analyzer.dic.DictSegment.lookforSegment(DictSegment.java:229)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:199)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:170)
at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:209)
at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:69)
at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:86)
at org.wltea.analyzer.core.IKSegmenter.init(IKSegmenter.java:85)
at org.wltea.analyzer.core.IKSegmenter.<init>(IKSegmenter.java:65)
at org.wltea.analyzer.lucene.IKTokenizer.<init>(IKTokenizer.java:63)
at org.wltea.analyzer.lucene.IKAnalyzer.tokenStream(IKAnalyzer.java:71)
我也报这个错误....很无奈..(我也是JDK1.5...难道真的是这个原因吗?....林兄有木有办法呀..提个意见..)
61 楼
wellwelldone
2012-07-12
请问,IK Analyzer 能否支持最新发布的solr 4 alpha
试了一下,好像有点问题,schema.xml加入IK分词的fieldType之后,
管理界面无法正常打开,提示出错
试了一下,好像有点问题,schema.xml加入IK分词的fieldType之后,
管理界面无法正常打开,提示出错
60 楼
linliangyi2007
2012-07-11
lection.yu 写道
请问楼主,经过您测试得出的160万字/秒的数据,是指智能分词还是最细力度分词。
智能分词
发表评论
-
来自开源支持者的第一笔捐赠
2013-01-09 21:15 57812013年1月9号,一个平凡而又不平常的日子! IK中文分词 ... -
发布 IK Analyzer 2012 FF 版本
2012-10-23 17:50 25081首先感谢大家对IK分词器的关注。 最近一段时间正式公司事务最 ... -
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 服务器硬 ... -
发布 IK Analyzer 3.2.8 for Lucene3.X
2011-03-04 17:49 14255IK Analyzer 3.2.8版本修订 ... -
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 6718IK Analyzer 3.2.3版本修订 在3.2.0版 ... -
windows平台上的nginx使用
2010-01-28 17:13 3406转载自: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最近又把以前学习的模式过了一遍,感觉模式不是学出来的,是悟出来 ...
相关推荐
2. IKAnalyzer2012.jar(主jar包) 3. IKAnalyzer.cfg.xml(分词器扩展配置文件) 4. stopword.dic(停止词典) 5. LICENSE.TXT ; NOTICE.TXT (apache版权申明) 它的安装部署十分简单,将 IKAnalyzer2012.jar ...
标题中的"IKAnalyzer2012FF_hf1.zip"指的是IK Analyzer的2012年最终版(Final)的高频率更新1(Hot Fix 1)。IK Analyzer是一款开源的、基于Java语言开发的轻量级中文分词器,主要用于Java环境下对中文文本的分词...
IKAnalyzer2012_u6中文分词器jar包 IKAnalyzer2012_u6中文分词器jar包 IKAnalyzer2012_u6中文分词器jar包 IKAnalyzer2012_u6中文分词器jar包 IKAnalyzer2012_u6中文分词器jar包
"2012FF_hf1.7z" 是IK Analyzer的一个特定版本,可能包含了优化和改进,适应了2012年及之后的技术需求。 在Solr中,分词器扮演着至关重要的角色。它们负责将输入的中文文本分解成一系列的词汇单元,这些单元通常被...
IKAnalyzer2012_u6中文分词器以及手册正式版 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2017/10/29 1:41 doc -a---- 2017/10/29 1:41 414 IKAnalyzer.cfg.xml -a---- 2017/10/29 1...
IKAnalyzer2012.jar 中文分词包
IKanalyzer2012是一款基于Java语言的开源中文分词器,主要用于处理中文文本的分词任务。在中文搜索引擎和自然语言处理领域,分词是基础且关键的一环,因为中文没有明显的空格来区分词汇,需要通过特定的算法进行切分...
使用IK分词器,应为该集群使用到的solr版本为4.10.3-cdh5.7.5,所以使用的 IK 包为IKAnalyzer2012FF_u1.jar,如果是3x的solr,使用IKAnalyzer2012_u6.jar solr-4.10.3下载地址:...
IKAnalyzer2012FF_u1.jar 是一款广泛应用于Java环境中的中文分词库,尤其在搜索引擎和文本分析领域有着重要的应用。这个jar包包含了IK Analyzer的最新版本,即2012FF_u1更新版,它是一款开源的、高性能的中文分词...
IKAnalyzer2012是一个专为中文处理设计的开源分词工具,主要应用于搜索引擎、文本分析和信息检索等领域。这个工具包的核心是IKAnalyzer2012.jar文件,它包含了IK Analyzer的所有功能和实现,是一个Java编写的库,...
标题提到的 "IK Analyzer 2012FF_hf1" 和 "IKAnalyzer2012_u6" 都是该分词器的不同版本。 IK Analyzer 2012FF_hf1 是2012年发布的HotFix 1更新版,"FF" 可能代表 "Final Fix",意味着这是对之前版本的最终修复,而 ...
IKAnalyzer2012_u6是一款基于Java语言开发的全文检索分析器,主要应用于中文信息处理,如搜索引擎、文本挖掘等场景。这个版本是u6更新,意味着它是IKAnalyzer的一个升级版,修复了前一版本可能存在的问题,并可能...
解决lucene4.0与IKAnalyzer的冲突。解决Exception in thread "main" java.lang.VerifyError: class org.wltea.analyzer.lucene.IKAnalyzer overrides final method ...本资源包含了IKAnalyzer2012_FF_hf1.jar及源码
这个“IKAnalyzer2012.jar.zip”压缩包包含了IKAnalyzer的两个不同版本的jar包,分别是IKAnalyzer2012.jar和IKAnalyzer2012FF_u1.jar。 1. **IKAnalyzer简介** - IKAnalyzer是由国人开发的一款高性能的中文分词...
2012FF_hf1 版本是IK Analyzer的一个特定版本,HF1代表Hot Fix 1,即该版本是对2012FF版本的小幅修正版。 IK Analyzer 2012FF_hf1 版本在原有的基础上进行了性能优化和错误修复,确保了其在处理中文文本时的准确性...
IK Analyzer 2012 IKAnalyzer2012_u3 IK Analyzer 2012 IKAnalyzer2012_u3 IK Analyzer 2012 IKAnalyzer2012_u3
ikanalyzer2012ff_u1 是一个专为Solr 4.10.3版本设计的IK分词器插件。在中文信息检索和文本分析领域,分词器扮演着至关重要的角色,它能够将连续的汉字序列切分成具有语义意义的词语单元,便于后续的索引和查询操作...
从 2006年 12 月推出 1.0 版开始,IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,...