in indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java [221:260]
private static void filterDirectory(final Directory directory, final DocumentFilter filter) throws IOException {
IndexReader r = null;
IndexWriter w = null;
try {
r = DirectoryReader.open(directory);
w = new NexusIndexWriter(directory, new IndexWriterConfig(new NexusAnalyzer()));
Bits liveDocs = MultiBits.getLiveDocs(r);
int numDocs = r.maxDoc();
StoredFields storedFields = r.storedFields();
for (int i = 0; i < numDocs; i++) {
if (liveDocs != null && !liveDocs.get(i)) {
continue;
}
Document d = storedFields.document(i);
if (!filter.accept(d)) {
boolean success = w.tryDeleteDocument(r, i) != -1;
// FIXME handle deletion failure
}
}
w.commit();
} finally {
IndexUtils.close(r);
IndexUtils.close(w);
}
w = null;
try {
// analyzer is unimportant, since we are not adding/searching to/on index, only reading/deleting
w = new NexusIndexWriter(directory, new IndexWriterConfig(new NexusAnalyzer()));
w.commit();
} finally {
IndexUtils.close(w);
}
}