Lucene使用IKAnalyzer分词时报错:”TokenStream contract violation: close() call missing”  解决办法是每次完成后必须调用关闭方法。

如果报错:java.lang.illegalstateexception: tokenstream contract violation: reset()/close() call missing,则要在tokenStream.incrementToken(),原因是lucene从4.6.0开始tokenstream使用方法更改的问题,在使用incrementtoken方法前必须调用reset方法,详见api http://lucene.apache.org/core/4_6_0/core/index.html 。

以下正确示例代码(第10行和22行调用reset()和close()方法):

public Set<String> slicing(String text){Set<String> result = new HashSet<>();StringReader reader = null;TokenStream tokenStream = null;try {reader = new StringReader(text);tokenStream = analyzer.tokenStream("", reader);  CharTermAttribute charTermAttribute  = tokenStream.getAttribute(CharTermAttribute.class); OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class);  tokenStream.reset();while (tokenStream.incrementToken()) {  int startOffset = offsetAttribute.startOffset();  int endOffset   = offsetAttribute.endOffset();if((endOffset - startOffset) > 1){String term = charTermAttribute.toString(); result.add(term);}}  } catch (IOException e) {e.printStackTrace();} finally{IOs.close(tokenStream, reader);}return result;
}

http://www.lizi.pw/archives/56

org.wltea.analyzer.lucene.IKAnalyzer

Exception in thread "main" java.lang.IllegalStateException: 词典尚未初始化,请先调用initial方法
at org.wltea.analyzer.dic.Dictionary.getSingleton(Dictionary.java:137)
at org.wltea.analyzer.core.CJKSegmenter.analyze(CJKSegmenter.java:80)
at org.wltea.analyzer.core.IKSegmenter.next(IKSegmenter.java:116)
at org.wltea.analyzer.lucene.IKTokenizer.incrementToken(IKTokenizer.java:88)

转载于:https://www.cnblogs.com/softidea/p/6084043.html

Lucene分词报错:”TokenStream contract violation: close() call missing”相关推荐

  1. Lucene 4.6.1 java.lang.IllegalStateException: TokenStream contract violation

    这是旧代码在新版本Lucene中出现的异常,异常如下: Exception in thread "main" java.lang.IllegalStateException: To ...

  2. IKAnalyzer2012FF + Lucene4.9 TokenStream contract violation: reset()/close() call missing

    异常信息如下: java.lang.IllegalStateException: TokenStream contract violation: reset()/close() call missin ...

  3. 区块链报错 5 | Contract has not been deployed to detect network (network/artifact mismatch)

    初学记录 · 欢迎交流 区块链DApp从零开始学 (一) | DApp抓包 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token |宠物领养 区块链知识 (一) | 实例 ...

  4. react报错 Uncaught Invariant Violation: Unable to find node on an unmounted compone

    react报错 Uncaught Invariant Violation: Unable to find node on an unmounted compone 在采用ant.design的Tabl ...

  5. 关于加入@RequestBody后请求报错:Required request body is missing:

    关于加入@RequestBody后请求报错: Required request body is missing: 这个错误是由于Controller中加入了@RequestBody后却收不到指定请求体 ...

  6. 使用opengl glGetIntegerv报错 :Access violation executing location0x0000000000000000

    使用opengl glGetIntegerv报错 : Exception thrown at 0x0000000000000000 in OpenGLBaseCode1.exe: 0xC0000005 ...

  7. vue run dev报错 缺少package.json文件、missing dev 命令 解决办法

    新建好一个vue项目后,终端执行npm run dev 报了两个错 1.缺少package.json文件 解决办法:执行 npm init -y 生成一个新的package.json 2.missin ...

  8. 微信公众号开发,报错{errcode:41005,errmsg:media data missing hint:}的解决办法---亲测有效

    在微信开发中,遇到报错:errcode":41005,"errmsg":"media data missing hint 具体解决办法如下地址,实测有效: 对应 ...

  9. vue启动报错!Module build failed: Error: Missing binding D:\WorkSpace\vue\OfficeSuite\OfficeFrontend\node

    报错信息如下: This usually happens because your environment has changed since running `npm install`. Run ` ...

最新文章

  1. 卢松松:如何复制暴利产品
  2. Linux 基础知识(九)
  3. EJB3 学习笔记六
  4. mysql根据经纬度查询范围内数据,并根据距离排序
  5. 爬取人民日报_【爬虫系列】人民日报半个世纪的资料(文末福利)
  6. java获取光标位置_javastscript获取光标位置
  7. redis缓存队列+MySQL +php任务脚本定时批量入库
  8. 用matlab设计模糊控制器
  9. matlab二重定积分_怎么用matlab计算这个二重积分如何用matlab求二重积分
  10. xyz坐标转换ybc_GNSS仰角和方位角的计算及代码,XYZ转BLH坐标的代码及原理
  11. ACL2019之对话系统
  12. 【手把手】ElasticSearch的搜索推荐相关
  13. 作为一个程序员,如何保持优秀
  14. mysql 字段被截断_msyql存储数据时字段被截断
  15. 基于聚类算法的图像分割技术
  16. 大数据基础之Spark——Spark pregel详细过程,一看就懂
  17. TADF材料的机制原理;TADF的机理;热活化延迟荧光如何产生?
  18. Android推特图片保存路径,如何将twitter的URL内容(tweet,user,comment,…)添加到我的android应用程序...
  19. 将base64转换为图片
  20. 恩智浦率先推出超宽带Doherty放大器

热门文章

  1. ipfs-缓存/Pinning(文件持久存储、垃圾收集机制)
  2. 麦克风android权限管理,android权限处理详解
  3. 四川三星堆遗址,是历史上哪个朝代?
  4. 317 离建筑物最近的距离
  5. php mysql cpu使用率_PHP / MySQL:虽然CPU使用率始终低于40%,但12个CPU内核能否使应用程序比6个CPU内核更快?...
  6. java正则表达式替换特殊字符_使用正则表达式替换报表名称中的特殊字符(推荐)...
  7. 03 常用统计模型简述
  8. 【Linux】Linux系统如何修改/设置服务器ip地址
  9. 分词算法----正向和逆向最大匹配算法(含Python代码实现)
  10. C++可变参数模板显式特例化