精华帖 (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的吧,我这边测试了你给我的文档,没有问题啊 |
|
返回顶楼 | |
发表时间: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(); } |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2009-08-05
速度好快,这么快就解决了!支持一下
|
|
返回顶楼 | |
发表时间:2009-08-05
crazy_001 写道 速度好快,这么快就解决了!支持一下
支持要记得顶贴哦 ,嘎嘎嘎。 |
|
返回顶楼 | |
发表时间:2009-08-14
楼主IK3的源码,我看了两三个星期,不知道有没有看懂一半了,总之就是有很多是看不懂的,虽然有注释.或许是我比较愚笨吧,呵呵.建议楼主,有空时出一系列文章叫<<IK3源码分析>>,让我们学习一下.
|
|
返回顶楼 | |
发表时间:2009-08-14
rongxh7 写道 楼主IK3的源码,我看了两三个星期,不知道有没有看懂一半了,总之就是有很多是看不懂的,虽然有注释.或许是我比较愚笨吧,呵呵.建议楼主,有空时出一系列文章叫<<IK3源码分析>>,让我们学习一下.
哈哈,主意是不错,不过就怕被人说成自卖自夸就惨了 |
|
返回顶楼 | |