java - 使用Lucene 4删除文档并检索已删除文档的所有docId

标签 java lucene

我正在使用Lucene 4保留数据。我现在面临的问题如下:

如何从索引中删除文档,然后检索已删除文档的docId?

这是我用来删除文档的方法:

Query query = new BooleanQuery();
...
indexWriter.deleteDocuments(query);


但是一旦调用此方法,我还没有找到一种方法(方法或回调)来获取已删除的文档(及其字段)。

有谁知道如何做到这一点?

最佳答案

我认为您无法在一个电话中做到这一点。

由于Lucene删除不会立即发生(需要额外的commit()),因此返回已删除的文档ID会有点模棱两可。如果在delete方法内部查看,它实际上只是将作业添加到其中一个删除队列。也就是说,commit()也不会返回与此相关的任何内容;-(

无论如何,我唯一想到的方法是运行query,收集文档/文档ID并随后运行deleteDocuments(query)。您可能会出现一些重叠(例如是否另一个线程将删除相同的文档),但是由于commit()阶段,这是不可避免的。

关于java - 使用Lucene 4删除文档并检索已删除文档的所有docId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585264/

相关文章:

java - Hibernate Search 对一个查询很慢,对另一个查询很快

java - 在 Solr 中运行 Lire 图像搜索——如何?

java - 和Hibernate(lucene)搜索中的运算符

java - Junit测试无效2D阵列

java - spring 的 oauth/token 响应中不返回刷新 token

java - Spring Security @PreAuthorize-ProviderNotFoundException

java - 更改方法的返回值

java - hibernate 搜索,现有数据不可搜索

java - lucene 5.0.0的SmartChineseAnalyzer可以指定或添加自定义词典吗?

java - Maven 多模块项目和自定义 JRE