`
helpbs
  • 浏览: 1163457 次
文章分类
社区版块
存档分类
最新评论

lucene中的删除索引

 
阅读更多
今天在测试lucene的删除索引中遇到一个问题
测试代码如下:
。。。。。。。

protectedvoidsetUp()throwsException...{
super.setUp();
deleteIndexBuilder
=(DeleteIndexBuilder)CTX
.getBean(
"deleteIndexBuilder");

addIndexBuilder
=(AddIndexBuilder)CTX.getBean("addIndexBuilder");
addIndexBuilder.getConstant().setCreateAble(
true);
addIndexBuilder.buildIndex();

}


。。。。。。。

publicvoidtestDeleteIndex()throwsException...{

//代码段1
IndexReaderreader2=IndexReader.open(deleteIndexBuilder.getConstant()
.getIndexDir());

assertEquals(
23,reader2.numDocs());
reader2.close();

//代码段2
deleteIndexBuilder.buildIndex();

//代码段3
IndexReaderreader3=IndexReader.open(deleteIndexBuilder.getConstant()
.getIndexDir());

assertEquals(
13,reader3.numDocs());
reader3.close();

}

在测试中,首先重建索引(见setup方法),在测试方法中可以看出

1) 删除前有23个doc(见代码段1)
2) 删除索引(共10个doc,见代码段2)
3) 删除后有13个doc(见代码段3)

第一次执行,没问题,第二次执行就发现代码段1处出现断言错误,说该处此刻只有13个doc

后来发现原来使用IndexReader.deleteDocuments 方法就算调用了IndexReader.close也并不删除doc,这与lucene in action(page 33)中的说法有些出入
Documentdeletionisdoneusingaclassthatissomewhatinappropriately
calledIndexReader.Thisclassdoesn’tdeleteDocumentsfromtheindeximmediately.
Instead,itmarksthemasdeleted,waitingfortheactualDocumentdeletion
untilIndexReader’sclose()methodiscalled.

我想也许是lucene版本不一样的原因.

其实使用lucene删除,lucene会做好删除标记直到你调用IndexWriter.optimize()才真正从库中删除.

出现上面测试所遇到的问题正是因为在重建索引时才真正删除doc,这样的话就与断言的23不符合,测试失败

lucene的这种删除方式似乎也不大会影响你的应用,就算没有从库中删除,你也搜索不到这个
doc了,至于是不是要在删除索引的时候添上IndexWriter.optimize()以及IndexWriter.close()这样的代码视情况而定.

分享到:
评论

相关推荐

    Lucene之删除索引

    Lucene之删除索引 Lucene之删除索引 Lucene之删除索引 http://blog.csdn.net/nupt123456789/article/details/10666105

    Lucene 删除 合并索引

    Lucene 删除 合并索引,可以指定几个索引文件合并成一个索引文件。自己写的,有很多不足之处请多指教

    lucene.net 2.9.2 实现索引生成,修改,查询,删除实例

    lucene.net 2.9.2 实现索引生成,修改,查询,删除实例

    lucene 4.7.2 Demo

    lucene 4.7.2支持java 6 ,之后的版本需要java 7以上,创建、删除、修改索引,搜索支持通用对象(可以根据对象类型搜索),可以范围搜索、排序、高亮,希望有所帮助

    Lucene 索引、删除、检索 实例

    完整的Eclipse 工程,举一些小例子,Lucene的建立索引、删除索引、以及检索,希望对喜欢或者用Lucene开发程序的朋友们有所帮助!

    Lucene Demo(创建、增加、更新、删除索引等)

    Lucene使用的一个Demo,包括索引的创建、增加、更新、删除等

    lucene检索实例代码,自己总结的非常详细

    文档中包含Lucene4.0.0版本jar包,中文分词器jar包,Lucene实例代码 1:建立索引 2:各种搜索方式方法 3:删除索引 4:检查索引文件 5:恢复删除的索引 6:强制删除 7:更新索引 8:合并索引 9:高亮回显 供大家参考...

    lucene5.3.1增删改查

    基于lucene5.3.1的项目实例 lucene创建索引,删除索引,更新索引,查找索引。

    lucene.net 索引文件图形界面管理器

    lucene.net 索引文件图形界面管理器,可以查看分词情况和索引记录,增加删除操作等。

    lucene学习

    Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a) 创建索引 b) 查询索引 3、配置开发环境 4、创建索引库 5、查询索引库 ...solr在项目中的应用及电商搜索实现

    java Lucene初级教程

    所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除;所谓出是读出,即向用户提供全文搜索服务,让用户可以通过关键词定位源。 2.1写入流程  源字符串首先经过analyzer处理,包括:分词,...

    Lucene实战视频教程

    资源名称:Lucene实战视频教程资源目录:【】01_lucenc简介和创建索引初步【】02_lucene简介和搜索初步【】03_lucene索引_创建_域选项【】04_lucene索引_的删除和更新【】05_lucene索引_加权操作和Luke的简单演示...

    lucene4.0 demo

    lucene4.0创建索引,删除索引,搜索的一些小demo,分享出来供大家学习。

    Lucene 3.6 学习笔记

    2.5 删除和更新索引 5 (1) 使用writer删除 5 (2) 使用reader删除 5 (3) 恢复删除 5 (4) 彻底删除 6 (5) 更新索引 6 (6) 手动优化 6 2.6 索引文件作用 7 第三章 搜索功能 8 3.1 简单搜索 8 (1) 创建IndexReader 8 (2)...

    【大搜集:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    基于Java的全文索引引擎.doc lucene测试代码.txt lucene为数据库搜索建立增量索引.txt lucene数据库索引.txt 新闻系统全文检索的思绪.txt ... 关于lucene2.0的创建、检索和删除功能的完整实现.doc weblucene.txt

    Lucene:基于Java的全文检索引擎简介

    Lucene是一个基于Java的全文索引工具包。 1. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的...5. Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的 扩展 6. 从Lucene我们还可以学到什么

    Lucene 详细教案

    这样你就告诉 lucene 我要在 c 盘的 index 目录下建立索引文件,我要使用车东老师的二分词算法做分析器、我要在这个目录下删除以前的索引或任何文件创立我的索引文件。 索引的建立有三种方式,让我一一道来: 1 ...

    lucene2.9.1所有最新开发包及源码及文档

    对索引进行读取和删除操作的IndexReader类。 3) store模块:负责索引的存储。提供索引的各种存储类:FSDirectory,RAMDirectory等。 4) document模块:索引文件内部的基础存储结构封装。如:Document类和Field类等...

    lucene.net实例

    lucene.net实现全文检索,有网上难以找到的增量索引、更新索引、删除索引实例,五万多条数据,建立索引、查询数据瞬间完成,速度之快难以想象。

    Lucene搜索引擎开发权威经典 光盘

    介绍了Lucene建立索引的过程,索引的查看和删除,索引的同步,索引的合并和优化等内容。第4部分:搜索的高级知识。介绍使用不同的Query对象构建搜索请求,使用QueryParser解析用户的搜索请求,搜索结果的过滤和排序...

Global site tag (gtag.js) - Google Analytics