Lucene入门之索引的管理

查看索引

使用 IndexWriter 类读取索引的相关信息

    IndexWriter 虽然不是专门用来查看索引的工具,但是这个类的一些 get 方法也可以查看一些索引文档的相关信息。

   例如 writer.getDirectory().toString();writer.numRamDocs(),writer.docCount() 方法。

使用 IndexReader 及其子类读取索引的信息

   IndexReader 类专门用于读取索引信息的类,它是一个抽象类,含有 FilterIndexReader,MuliReader ParallelReader 等子类。

   IndexReader 类通过静态方法 open(String indexPath) 可以得到其子类。

   使用 IndexReader 类可以获得某个索引的详细情况。例如,指定路径的索引是否存在,索引中包含的文档,索引中包含的词条,索引是否进行过优化。

删除索引中的文档

删除指定序号的文档

通过调用 IndexReader 类的 deleteDocument(int id) 方法,可以从索引中删除指定的序号的文档。

这个时候,索引的目录下会生成一个 del 得新文件。这个文件中存储了被删除了的文档的信息。

但是,文档并没有真正从索引文档中删除,只是做了已经被删除的标记,从而可以使之不能参与索引。

恢复被删除的文档

通过 IndexReader 类的 undeleteAll() 方法即可将所有的标记为已删除的文档都恢复过来。

物理删除文档

要从物理上删除索引中的文档,有如下两个步骤:

使用 IndexReader 做文档删除的标记,即调用 deleteDocument 的方法。

1,  执行 IndexWriter optimize() 方法。

批量删除文档

1,  使用循环语句。

2,  调用 IndexReader int deleteDocuments(Term term) 这个方法,可以删除指定 Term 的文档。因为 Lucene 建立的索引是倒排索引,是以文档编号和短语标志排列的,所以 Lucene 实现了按照 Term 去删除文档。但是这种方法,也只是做标记,并不真正地删除。

使用 IndexModifier 从索引中删除文档

IndexModifier 类是专门用于全面操作索引的类。是一个新类。这个类集成了 IndexWriter IndexReader 两个类的方法,从而可以建立索引,查看索引,修改索引。

同时 IndexModifier 类是线程安全的。

更新索引

    更新索引中的文档

更新的方法,先删除,后增加。

批量更新索引中的文档

      批量更新的方法,不是一个一个地更新,而是先批量删除,再一个一个地添加。

      也可以调用 IndexWriter 更新索引的方法:

      Void updateDocument(Term term,Document doc,Analyzer analyzer);

      Void updateDocument(Term term,Document doc)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值