mirror of https://github.com/apache/lucene.git
move some bitvector -> mutablebits
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene3661@1233498 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
de495a3c0d
commit
da3dbb0e0c
|
@ -25,7 +25,6 @@ import java.text.NumberFormat;
|
||||||
|
|
||||||
import org.apache.lucene.analysis.Analyzer;
|
import org.apache.lucene.analysis.Analyzer;
|
||||||
import org.apache.lucene.codecs.Codec;
|
import org.apache.lucene.codecs.Codec;
|
||||||
import org.apache.lucene.codecs.lucene40.BitVector;
|
|
||||||
import org.apache.lucene.index.DocumentsWriterDeleteQueue.DeleteSlice;
|
import org.apache.lucene.index.DocumentsWriterDeleteQueue.DeleteSlice;
|
||||||
import org.apache.lucene.search.similarities.SimilarityProvider;
|
import org.apache.lucene.search.similarities.SimilarityProvider;
|
||||||
import org.apache.lucene.store.Directory;
|
import org.apache.lucene.store.Directory;
|
||||||
|
@ -36,6 +35,7 @@ import org.apache.lucene.util.ByteBlockPool.Allocator;
|
||||||
import org.apache.lucene.util.ByteBlockPool.DirectTrackingAllocator;
|
import org.apache.lucene.util.ByteBlockPool.DirectTrackingAllocator;
|
||||||
import org.apache.lucene.util.InfoStream;
|
import org.apache.lucene.util.InfoStream;
|
||||||
import org.apache.lucene.util.RamUsageEstimator;
|
import org.apache.lucene.util.RamUsageEstimator;
|
||||||
|
import org.apache.lucene.util.MutableBits;
|
||||||
|
|
||||||
public class DocumentsWriterPerThread {
|
public class DocumentsWriterPerThread {
|
||||||
|
|
||||||
|
@ -114,10 +114,10 @@ public class DocumentsWriterPerThread {
|
||||||
static class FlushedSegment {
|
static class FlushedSegment {
|
||||||
final SegmentInfo segmentInfo;
|
final SegmentInfo segmentInfo;
|
||||||
final BufferedDeletes segmentDeletes;
|
final BufferedDeletes segmentDeletes;
|
||||||
final BitVector liveDocs;
|
final MutableBits liveDocs;
|
||||||
|
|
||||||
private FlushedSegment(SegmentInfo segmentInfo,
|
private FlushedSegment(SegmentInfo segmentInfo,
|
||||||
BufferedDeletes segmentDeletes, BitVector liveDocs) {
|
BufferedDeletes segmentDeletes, MutableBits liveDocs) {
|
||||||
this.segmentInfo = segmentInfo;
|
this.segmentInfo = segmentInfo;
|
||||||
this.segmentDeletes = segmentDeletes;
|
this.segmentDeletes = segmentDeletes;
|
||||||
this.liveDocs = liveDocs;
|
this.liveDocs = liveDocs;
|
||||||
|
@ -448,8 +448,7 @@ public class DocumentsWriterPerThread {
|
||||||
// happens when an exception is hit processing that
|
// happens when an exception is hit processing that
|
||||||
// doc, eg if analyzer has some problem w/ the text):
|
// doc, eg if analyzer has some problem w/ the text):
|
||||||
if (pendingDeletes.docIDs.size() > 0) {
|
if (pendingDeletes.docIDs.size() > 0) {
|
||||||
flushState.liveDocs = new BitVector(numDocsInRAM);
|
flushState.liveDocs = codec.liveDocsFormat().newLiveDocs(numDocsInRAM);
|
||||||
flushState.liveDocs.invertAll();
|
|
||||||
for(int delDocID : pendingDeletes.docIDs) {
|
for(int delDocID : pendingDeletes.docIDs) {
|
||||||
flushState.liveDocs.clear(delDocID);
|
flushState.liveDocs.clear(delDocID);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@ import org.apache.lucene.codecs.FieldsConsumer;
|
||||||
import org.apache.lucene.codecs.PostingsConsumer;
|
import org.apache.lucene.codecs.PostingsConsumer;
|
||||||
import org.apache.lucene.codecs.TermStats;
|
import org.apache.lucene.codecs.TermStats;
|
||||||
import org.apache.lucene.codecs.TermsConsumer;
|
import org.apache.lucene.codecs.TermsConsumer;
|
||||||
import org.apache.lucene.codecs.lucene40.BitVector;
|
|
||||||
import org.apache.lucene.index.FieldInfo.IndexOptions;
|
import org.apache.lucene.index.FieldInfo.IndexOptions;
|
||||||
import org.apache.lucene.util.BytesRef;
|
import org.apache.lucene.util.BytesRef;
|
||||||
import org.apache.lucene.util.FixedBitSet;
|
import org.apache.lucene.util.FixedBitSet;
|
||||||
|
@ -461,9 +460,10 @@ final class FreqProxTermsWriterPerField extends TermsHashConsumerPerField implem
|
||||||
// Mark it deleted. TODO: we could also skip
|
// Mark it deleted. TODO: we could also skip
|
||||||
// writing its postings; this would be
|
// writing its postings; this would be
|
||||||
// deterministic (just for this Term's docs).
|
// deterministic (just for this Term's docs).
|
||||||
|
|
||||||
|
// nocommit: totally wrong to do this reach-around here, and this way
|
||||||
if (state.liveDocs == null) {
|
if (state.liveDocs == null) {
|
||||||
state.liveDocs = new BitVector(state.numDocs);
|
state.liveDocs = docState.docWriter.codec.liveDocsFormat().newLiveDocs(state.numDocs);
|
||||||
state.liveDocs.invertAll();
|
|
||||||
}
|
}
|
||||||
state.liveDocs.clear(docID);
|
state.liveDocs.clear(docID);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2267,7 +2267,10 @@ public class IndexWriter implements Closeable, TwoPhaseCommit {
|
||||||
// shortly-to-be-opened SegmentReader and let it
|
// shortly-to-be-opened SegmentReader and let it
|
||||||
// carry the changes; there's no reason to use
|
// carry the changes; there's no reason to use
|
||||||
// filesystem as intermediary here.
|
// filesystem as intermediary here.
|
||||||
flushedSegment.liveDocs.write(directory, delFileName, context);
|
|
||||||
|
SegmentInfo info = flushedSegment.segmentInfo;
|
||||||
|
Codec codec = info.getCodec();
|
||||||
|
codec.liveDocsFormat().writeLiveDocs(flushedSegment.liveDocs, directory, info, context);
|
||||||
success2 = true;
|
success2 = true;
|
||||||
} finally {
|
} finally {
|
||||||
if (!success2) {
|
if (!success2) {
|
||||||
|
|
|
@ -18,10 +18,10 @@ package org.apache.lucene.index;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.lucene.codecs.Codec;
|
import org.apache.lucene.codecs.Codec;
|
||||||
import org.apache.lucene.codecs.lucene40.BitVector;
|
|
||||||
import org.apache.lucene.store.Directory;
|
import org.apache.lucene.store.Directory;
|
||||||
import org.apache.lucene.store.IOContext;
|
import org.apache.lucene.store.IOContext;
|
||||||
import org.apache.lucene.util.InfoStream;
|
import org.apache.lucene.util.InfoStream;
|
||||||
|
import org.apache.lucene.util.MutableBits;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @lucene.experimental
|
* @lucene.experimental
|
||||||
|
@ -41,7 +41,7 @@ public class SegmentWriteState {
|
||||||
public final BufferedDeletes segDeletes;
|
public final BufferedDeletes segDeletes;
|
||||||
|
|
||||||
// Lazily created:
|
// Lazily created:
|
||||||
public BitVector liveDocs;
|
public MutableBits liveDocs;
|
||||||
|
|
||||||
public final Codec codec;
|
public final Codec codec;
|
||||||
public final String segmentSuffix;
|
public final String segmentSuffix;
|
||||||
|
|
|
@ -18,5 +18,7 @@ package org.apache.lucene.util;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public interface MutableBits extends Bits {
|
public interface MutableBits extends Bits {
|
||||||
|
public void clear(int bit);
|
||||||
|
// nocommit: remove this from this interface somehow? (used by DWPT infostream at least)
|
||||||
|
public int count();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue