论坛首页 Java企业应用论坛

发布IK Analyzer 3.1 GA升级包

浏览 7728 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-04  
crazy_001 写道
linliangyi2007 写道
crazy_001 写道
楼主,你好!我以前也用过这个分词,觉得不错,看了你发布新版的,也拿来试试看,但在建索引的时候会报出以下异常,不知道算不算bug:
Exception in thread "main" java.lang.IllegalArgumentException: length < 0
at org.wltea.analyzer.Lexeme.<init>(Lexeme.java:47)


你用的那个版本?3.0在切分数词时,有这个bug,请使用IK3.1GA以上版本

另外你进行分词的文字能发给我看一下嘛?

我用的是从svn上更新下来的,应该是最新的,可能跟数据长度有关吧,我把数据也上传一下,你测试看看


兄弟,你的版本应该是3.0的,重新下一个3.1.1的吧,我这边测试了你给我的文档,没有问题啊
0 请登录后投票
   发表时间:2009-08-04  
linliangyi2007 写道
crazy_001 写道
linliangyi2007 写道
crazy_001 写道
楼主,你好!我以前也用过这个分词,觉得不错,看了你发布新版的,也拿来试试看,但在建索引的时候会报出以下异常,不知道算不算bug:
Exception in thread "main" java.lang.IllegalArgumentException: length < 0
at org.wltea.analyzer.Lexeme.<init>(Lexeme.java:47)


你用的那个版本?3.0在切分数词时,有这个bug,请使用IK3.1GA以上版本

另外你进行分词的文字能发给我看一下嘛?

我用的是从svn上更新下来的,应该是最新的,可能跟数据长度有关吧,我把数据也上传一下,你测试看看


兄弟,你的版本应该是3.0的,重新下一个3.1.1的吧,我这边测试了你给我的文档,没有问题啊

如果svn上面是最新的,那我用的也是最新的,可能测试方式不一样,我的数据是放在xml文件里的,然后从xml读取出来再建索引就会有问题,如果把内容直接放在一个字符变量中是没有问题的,我再传一份xml文件,你测试看看
测试代码:
String s = "";
IKAnalyzer analyzer = new IKAnalyzer();
IndexWriter writer = null;
Directory directory = new RAMDirectory();
try {
writer = new IndexWriter(directory, analyzer, true, MaxFieldLength.UNLIMITED);
SAXReader reader = new SAXReader();
reader.setEncoding("utf-8");
org.dom4j.Document document = reader.read("g:/xml1/text.xml");
Element e = (Element)document.selectObject("/SEGMENT/DOCUMENT/CONTENT");
s = e.getText();
System.out.println("====="+s);
Document doc = new Document();
Field field = new Field("context", s, Field.Store.NO,Field.Index.ANALYZED);
doc.add(field);
writer.addDocument(doc, analyzer);
writer.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
0 请登录后投票
   发表时间:2009-08-05  
crazy_001 写道

如果svn上面是最新的,那我用的也是最新的,可能测试方式不一样,我的数据是放在xml文件里的,然后从xml读取出来再建索引就会有问题,如果把内容直接放在一个字符变量中是没有问题的,我再传一份xml文件,你测试看看
测试代码:
String s = "";
IKAnalyzer analyzer = new IKAnalyzer();
IndexWriter writer = null;
Directory directory = new RAMDirectory();
try {
writer = new IndexWriter(directory, analyzer, true, MaxFieldLength.UNLIMITED);
SAXReader reader = new SAXReader();
reader.setEncoding("utf-8");
org.dom4j.Document document = reader.read("g:/xml1/text.xml");
Element e = (Element)document.selectObject("/SEGMENT/DOCUMENT/CONTENT");
s = e.getText();
System.out.println("====="+s);
Document doc = new Document();
Field field = new Field("context", s, Field.Store.NO,Field.Index.ANALYZED);
doc.add(field);
writer.addDocument(doc, analyzer);
writer.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


BUG已经修订,谢谢啊!这个bug藏的相当深,因为你的文本不仅长而且中间没有任何的标点、空格来分割,造成了缓冲区边界处理时的指针异常。 IK3.1.1GA2已发布,地址http://www.iteye.com/topic/440321

0 请登录后投票
   发表时间:2009-08-05  
速度好快,这么快就解决了!支持一下
0 请登录后投票
   发表时间:2009-08-05  
crazy_001 写道
速度好快,这么快就解决了!支持一下


支持要记得顶贴哦 ,嘎嘎嘎。
0 请登录后投票
   发表时间:2009-08-14  
楼主IK3的源码,我看了两三个星期,不知道有没有看懂一半了,总之就是有很多是看不懂的,虽然有注释.或许是我比较愚笨吧,呵呵.建议楼主,有空时出一系列文章叫<<IK3源码分析>>,让我们学习一下.
0 请登录后投票
   发表时间:2009-08-14  
rongxh7 写道
楼主IK3的源码,我看了两三个星期,不知道有没有看懂一半了,总之就是有很多是看不懂的,虽然有注释.或许是我比较愚笨吧,呵呵.建议楼主,有空时出一系列文章叫<<IK3源码分析>>,让我们学习一下.



哈哈,主意是不错,不过就怕被人说成自卖自夸就惨了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics