20 aug 2007 kl. 14.33 skrev Michael McCandless:
"karl wettin" <[EMAIL PROTECTED]> wrote:
I want to set documents in my IndexReader as deleted, but I will
never commit these deletions. Sort of a filter on a reader rather
than on a searcher, and no write-locks.
I could go hacking in IndexReader, definalizing it for decoration of
deleteDocument(int), or something like that, but would really
prefere not to.
Yeah I think it may just be cleanest to modify IndexReader to not
acquire the write lock nor commit its changes to the Directory on
close.
How about something simple as this:
public class DeleteFilteredIndexReader extends FilterIndexReader {
public DeleteFilteredIndexReader(IndexReader in) {
super(in);
filter = new BitSet(in.maxDoc());
}
private BitSet filter;
public boolean isDeleted(int n) {
return filter.get(n) || super.isDeleted(n);
}
public boolean hasDeletions() {
return filter.nextSetBit(0) > -1 || super.hasDeletions();
}
I did not look in the classpath code of BitSet yet, but I suppose
the nextSetBit(0) could be optimized.
--
karl
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]