2019独角兽企业重金招聘Python工程师标准>>>

IndexReader提供了一个有时非常有用的方法undeleteAll,该方法能反向操作索引中所有被挂起的删除。需要注意的是,该方法只能对还未进行段合并的文档进反删除操作。该方法之所以能够实现反删除操作,是因为IndexWriter只能将删除文档标志为删除状态,但事实上并未真正移除这些文档,最终的删除操作是在该文档所对应的段进行合并时才执行的。(以上文字摘自《Lucene 实战》)

一、下面代码使用reader进行删除

public void delete02() {try {reader = IndexReader.open(directory,false);reader.deleteDocuments(new Term("id","1"));System.out.println("numDocs:"+reader.numDocs());System.out.println("maxDocs:"+reader.maxDoc());System.out.println("deleteDocs:"+reader.numDeletedDocs());System.out.println("=============");reader.undeleteAll();System.out.println("numDocs:"+reader.numDocs());System.out.println("maxDocs:"+reader.maxDoc());System.out.println("deleteDocs:"+reader.numDeletedDocs());reader.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (LockObtainFailedException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}

执行结果截图

二、下面代码使用writer进行删除

public void delete() {IndexWriter writer = null;try {reader = IndexReader.open(directory,false);     writer = new IndexWriter(directory,new IndexWriterConfig(Version.LUCENE_35,new StandardAnalyzer(Version.LUCENE_35)));//参数是一个选项,可以是一个Query,也可以是一个term,term是一个精确查找的值//此时删除的文档并不会被完全删除,而是存储在一个回收站中的,可以恢复//writer.deleteDocuments(new Term("id","1"));writer.deleteDocuments(new Term("id","1"));writer.commit();System.out.println("numDocs:"+reader.numDocs());System.out.println("maxDocs:"+reader.maxDoc());System.out.println("deleteDocs:"+reader.numDeletedDocs());reader.close();reader = IndexReader.open(directory,false);System.out.println("=============");System.out.println("numDocs:"+reader.numDocs());System.out.println("maxDocs:"+reader.maxDoc());System.out.println("deleteDocs:"+reader.numDeletedDocs());System.out.println("=============");//writer.close();reader.undeleteAll();System.out.println("numDocs:"+reader.numDocs());System.out.println("maxDocs:"+reader.maxDoc());System.out.println("deleteDocs:"+reader.numDeletedDocs());reader.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (LockObtainFailedException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if(writer!=null) writer.close();} catch (CorruptIndexException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

运行报错

把”writer.close();“的注释去掉再运行

查阅资料,可以作为借鉴的解析:

如果你试图通过IndexReader删除文档,需要记住:Lucene只允许一个writer打开一次。实施删除操作的IndexReader此时只能算作一个writer。这意味着在使用IndexReader进行删除操作之前必须关闭已打开的任何IndexWriter,反之亦然。

转载于:https://my.oschina.net/heroShane/blog/202348

Lucene知识小总结4:索引的反删除相关推荐

  1. 阿里深资架构师整理的Java 基础知识小抄 赶紧收藏

    本篇算是 Java 的基础知识小抄吧,之所以说小抄是因为觉得涵盖不是很细很全,但是基本的内容都有,当然后头还会继续完善,只是不会再用笔记录了!按照现在的习惯,先附上一张思维导图: 1. 安装与环境配置 ...

  2. 【知识小课堂】 mongodb 之 objectId

    一.OBJECTID 因公司开发人员在使用MONGODB时,总遇到一些小问题.为了增加大家的mongodb 数据库知识. 决定每周进行一.两次的知识小课堂.这里把内容整理出来,上传到博客中.也算是自己 ...

  3. Java多线程知识小抄集(二)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  4. 金融知识小科普 - 宽基指数

    --------------------------------------- 本文仅作为知识科普,无任何投资倾向,投资有风险,投资需谨慎. ----------------------------- ...

  5. 金融知识小科普 - 央行逆回购

    ------------------------------------------------------------------------------ 本文仅作为知识科普,无任何投资倾向,投资有 ...

  6. 金融知识小科普 - 北向资金

    --------------------------------------- 本文仅作为知识科普,无任何投资倾向,投资有风险,投资需谨慎. ----------------------------- ...

  7. 2019年全国安全生产活动主题防风险、除隐患、遏事故宣传教育片 安全月活动主题挂图视频、挂图、宣传单、折页、安全知识小手册、展板等

    2019年安全月活动宣传教育资料 征订单 今年6月是全国第18个"安全生产月",国务院安委会办公室将以危险化学品安全为重点,以"防风险.除隐患.遏事故"为主题, ...

  8. 《火灾防控应急科普知识小手册》2020年119消防安全宣传活动日警示教育片等资料

    这里写自定义目录标题 2020年全国"安全生产月"活动宣传教育音像教材 "联系人:柳月敏:13520568871(微信同步) 辛松松:13811420807(微信同步) ...

  9. 金融知识小科普 - 债券基金

    --------------------------------------- 本文仅作为知识科普,无任何投资倾向,投资有风险,投资需谨慎. ----------------------------- ...

最新文章

  1. Android实现买卖商品小游戏
  2. 劳力士格林尼治价格_劳力士行情暴跌后回涨,什么时候才是入手的最佳时机?...
  3. ASA 独立实现WEB URL过滤!!!
  4. python 比较运算符放在列表中_在Python3中将运算符放在列表中
  5. 工商银行黄金开户问答题答案
  6. react领域里面jsx中的style的值为什么放到了{}中
  7. yii2解决资源插件路径不对应问题
  8. sqlserver备份后无法还原的解决方法
  9. 力扣-48 旋转图像
  10. Python 中的容器
  11. 【极限精简888M,老机专用】星岚技术 Win7 x64 深度精简版 V2020.10
  12. 赠书 | 程序员学数学和算法基础畅销书单
  13. 【软件工程】-可行性研究报告
  14. usage.txt-2
  15. 自由传奇|为你的队伍加油!
  16. [附源码]java毕业设计归元种子销售管理系统
  17. Qt-qmake install相关
  18. LaTex\TexStudio 数学矩阵
  19. JavaWeb(后端)
  20. 【U8+】卸载远程通后,U8提示错误无法加载DLL“UFPAClient.dll”找不到指定的模块。

热门文章

  1. Doug Cutting—搜索之父
  2. CF662C Binary Table
  3. [九省联考2018]IIIDX 贪心 线段树
  4. 十二、dbms_logmnr(分析重做日志和归档日志)
  5. USB CDC 可变形参
  6. .NetCore(四) 在Nginx部署
  7. AC日记——【模板】最小费用最大流 P3381
  8. Orchard详解--第一篇 介绍
  9. SpringMvc和Mybatis整合需要配置的xml
  10. UITabbarController 实例一