/** Does in-place XOR of the bits provided by the iterator. */ public void xor(DocIdSetIterator iter) throws IOException { checkUnpositioned(iter); if (BitSetIterator.getFixedBitSetOrNull(iter) != null) { final FixedBitSet bits = BitSetIterator.getFixedBitSetOrNull(iter); xor(bits); } else { int doc; while ((doc = iter.nextDoc()) < numBits) { flip(doc); } } }
denseBuffer.flip(0, denseBuffer.length()); int excludedDoc = -1; for (int i = 0; i < excludedDocs.length; ++i) {
/** Does in-place XOR of the bits provided by the iterator. */ public void xor(DocIdSetIterator iter) throws IOException { assertUnpositioned(iter); if (BitSetIterator.getFixedBitSetOrNull(iter) != null) { final FixedBitSet bits = BitSetIterator.getFixedBitSetOrNull(iter); xor(bits); } else { int doc; while ((doc = iter.nextDoc()) < numBits) { flip(doc); } } }
/** Does in-place XOR of the bits provided by the iterator. */ public void xor(DocIdSetIterator iter) throws IOException { checkUnpositioned(iter); if (BitSetIterator.getFixedBitSetOrNull(iter) != null) { final FixedBitSet bits = BitSetIterator.getFixedBitSetOrNull(iter); xor(bits); } else { int doc; while ((doc = iter.nextDoc()) < numBits) { flip(doc); } } }
/** Does in-place XOR of the bits provided by the iterator. */ public void xor(DocIdSetIterator iter) throws IOException { assertUnpositioned(iter); if (BitSetIterator.getFixedBitSetOrNull(iter) != null) { final FixedBitSet bits = BitSetIterator.getFixedBitSetOrNull(iter); xor(bits); } else { int doc; while ((doc = iter.nextDoc()) < numBits) { flip(doc); } } }
/** * An attempt at modeling the intersection between two binary vectors, by randomizing the * dimensions that are not common */ public static BinaryVector intersection(BinaryVector vector, BinaryVector vector2) { FixedBitSet intersection = (FixedBitSet) vector.getCoordinates().clone(); FixedBitSet uncommonGround = (FixedBitSet) vector.getCoordinates().clone(); java.util.Random random = new java.util.Random(); random.setSeed((long) 23); //for consistency across experiments //everything different uncommonGround.xor(vector2.getCoordinates()); //to introduce random noise for (int x =0; x < vector.getDimension(); x++) { // if (x == 0) System.err.print(cnt+"/"+ numchanges+".."+"loop..."); double change = random.nextDouble(); if (uncommonGround.get(x) && change > 0.5) { intersection.flip(x); } } BinaryVector intersectionVector = (BinaryVector) VectorFactory.createZeroVector(VectorType.BINARY, vector.getDimension()); intersectionVector.setCoordinates(intersection); return intersectionVector; }
denseBuffer.flip(0, denseBuffer.length()); int excludedDoc = -1; for (int i = 0; i < excludedDocs.length; ++i) {
denseBuffer.flip(0, denseBuffer.length()); int excludedDoc = -1; for (int i = 0; i < excludedDocs.length; ++i) {
public DocumentFilteredIndexReader(IndexReader reader, Filter preserveFilter, boolean negateFilter) throws IOException { super(reader); final FixedBitSet bits = new FixedBitSet(in.maxDoc()); final DocIdSet docs = preserveFilter.getDocIdSet(in); if (docs != null) { final DocIdSetIterator it = docs.iterator(); if (it != null) { bits.or(it); } } // this is somehow inverse, if we negate the filter, we delete all documents it matches! if (!negateFilter) { bits.flip(0, in.maxDoc()); } if (in.hasDeletions()) { for (int i = 0; i < in.maxDoc(); i++) { if (in.isDeleted(i)) { bits.set(i); } } } this.readerDels = bits; this.numDocs = in.maxDoc() - bits.cardinality(); }
denseBuffer.flip(0, denseBuffer.length()); int excludedDoc = -1; for (int i = 0; i < excludedDocs.length; ++i) {
public DocumentFilteredLeafIndexReader(LeafReaderContext context, Weight preserveWeight, boolean negateFilter) throws IOException { // our cast is ok, since we open the Directory. super((CodecReader) context.reader()); final int maxDoc = in.maxDoc(); final FixedBitSet bits = new FixedBitSet(maxDoc); // ignore livedocs here, as we filter them later: final Scorer preverveScorer = preserveWeight.scorer(context); if (preverveScorer != null) { bits.or(preverveScorer.iterator()); } if (negateFilter) { bits.flip(0, maxDoc); } if (in.hasDeletions()) { final Bits oldLiveDocs = in.getLiveDocs(); assert oldLiveDocs != null; final DocIdSetIterator it = new BitSetIterator(bits, 0L); // the cost is not useful here for (int i = it.nextDoc(); i != DocIdSetIterator.NO_MORE_DOCS; i = it.nextDoc()) { if (!oldLiveDocs.get(i)) { // we can safely modify the current bit, as the iterator already stepped over it: bits.clear(i); } } } this.liveDocs = bits; this.numDocs = bits.cardinality(); }
public DocumentFilteredLeafIndexReader(LeafReaderContext context, Weight preserveWeight, boolean negateFilter) throws IOException { // our cast is ok, since we open the Directory. super((CodecReader) context.reader()); final int maxDoc = in.maxDoc(); final FixedBitSet bits = new FixedBitSet(maxDoc); // ignore livedocs here, as we filter them later: final Scorer preverveScorer = preserveWeight.scorer(context); if (preverveScorer != null) { bits.or(preverveScorer.iterator()); } if (negateFilter) { bits.flip(0, maxDoc); } if (in.hasDeletions()) { final Bits oldLiveDocs = in.getLiveDocs(); assert oldLiveDocs != null; final DocIdSetIterator it = new BitSetIterator(bits, 0L); // the cost is not useful here for (int i = it.nextDoc(); i != DocIdSetIterator.NO_MORE_DOCS; i = it.nextDoc()) { if (!oldLiveDocs.get(i)) { // we can safely modify the current bit, as the iterator already stepped over it: bits.clear(i); } } } this.liveDocs = bits; this.numDocs = bits.cardinality(); }
public DocumentFilteredLeafIndexReader(LeafReaderContext context, Weight preserveWeight, boolean negateFilter) throws IOException { // our cast is ok, since we open the Directory. super((CodecReader) context.reader()); final int maxDoc = in.maxDoc(); final FixedBitSet bits = new FixedBitSet(maxDoc); // ignore livedocs here, as we filter them later: final Scorer preverveScorer = preserveWeight.scorer(context); if (preverveScorer != null) { bits.or(preverveScorer.iterator()); } if (negateFilter) { bits.flip(0, maxDoc); } if (in.hasDeletions()) { final Bits oldLiveDocs = in.getLiveDocs(); assert oldLiveDocs != null; final DocIdSetIterator it = new BitSetIterator(bits, 0L); // the cost is not useful here for (int i = it.nextDoc(); i != DocIdSetIterator.NO_MORE_DOCS; i = it.nextDoc()) { if (!oldLiveDocs.get(i)) { // we can safely modify the current bit, as the iterator already stepped over it: bits.clear(i); } } } this.liveDocs = bits; this.numDocs = bits.cardinality(); }