Java 使用lucene 4删除文档并检索已删除文档的所有文档ID

Java 使用lucene 4删除文档并检索已删除文档的所有文档ID,java,lucene,Java,Lucene,我正在使用Lucene 4来保存我的数据。我现在面临的问题如下: 如何从索引中删除文档,然后检索已删除文档的docid 以下是我用来删除文档的方法: Query query = new BooleanQuery(); ... indexWriter.deleteDocuments(query); 但是一旦调用了这个方法,我就找不到一种方法(方法或回调)来获取被删除的文档(及其字段) 有人知道怎么做吗?我认为你不可能一次就做到这一点 由于Lucene不会立即删除(需要额外的commit()),因

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

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

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

Query query = new BooleanQuery();
...
indexWriter.deleteDocuments(query);
但是一旦调用了这个方法,我就找不到一种方法(方法或回调)来获取被删除的文档(及其字段)


有人知道怎么做吗?

我认为你不可能一次就做到这一点

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


无论如何,我能想到的唯一方法是运行
查询
,收集文档/文档ID,然后运行
删除文档(查询)
。您可能会遇到一些重叠(例如,如果另一个线程将删除相同的文档),但这是不可避免的,因为
提交()
阶段。

谢谢你的回答!看起来查询是不可避免的(太糟糕了,我想避免它…)。