/** this = this OR other */ public void or(FixedBitSet other) { or(other.bits, other.numWords); }
/** union (term group) bit-sets until they are disjoint (O(n^^2)), and each group have different terms */ private void unionTermGroups(ArrayList<FixedBitSet> bb) { int incr; for (int i=0; i<bb.size()-1; i+=incr) { incr = 1; int j = i+1; while (j<bb.size()) { if (bb.get(i).intersects(bb.get(j))) { bb.get(i).or(bb.get(j)); bb.remove(j); incr = 0; } else { ++j; } } } }
/** union (term group) bit-sets until they are disjoint (O(n^^2)), and each group have different terms */ private void unionTermGroups(ArrayList<FixedBitSet> bb) { int incr; for (int i=0; i<bb.size()-1; i+=incr) { incr = 1; int j = i+1; while (j<bb.size()) { if (bb.get(i).intersects(bb.get(j))) { bb.get(i).or(bb.get(j)); bb.remove(j); incr = 0; } else { ++j; } } } }
@Override public void or(DocIdSetIterator iter) throws IOException { if (BitSetIterator.getFixedBitSetOrNull(iter) != null) { checkUnpositioned(iter); final FixedBitSet bits = BitSetIterator.getFixedBitSetOrNull(iter); or(bits); } else { super.or(iter); } }
/** * Add the content of the provided {@link DocIdSetIterator} to this builder. * NOTE: if you need to build a {@link DocIdSet} out of a single * {@link DocIdSetIterator}, you should rather use {@link RoaringDocIdSet.Builder}. */ public void add(DocIdSetIterator iter) throws IOException { if (bitSet != null) { bitSet.or(iter); return; } int cost = (int) Math.min(Integer.MAX_VALUE, iter.cost()); BulkAdder adder = grow(cost); for (int i = 0; i < cost; ++i) { int doc = iter.nextDoc(); if (doc == DocIdSetIterator.NO_MORE_DOCS) { return; } adder.add(doc); } for (int doc = iter.nextDoc(); doc != DocIdSetIterator.NO_MORE_DOCS; doc = iter.nextDoc()) { grow(1).add(doc); } }
/** this = this OR other */ public void or(FixedBitSet other) { or(other.bits, other.numWords); }
/** this = this OR other */ public void or(FixedBitSet other) { or(other.bits, other.numWords); }
/** this = this OR other */ public void or(FixedBitSet other) { or(other.bits, other.numWords); }
@Override public void postCollect() throws IOException { final FixedBitSet allVisitedOrds = new FixedBitSet(maxOrd); for (long bucket = visitedOrds.size() - 1; bucket >= 0; --bucket) { final FixedBitSet bits = visitedOrds.get(bucket); if (bits != null) { allVisitedOrds.or(bits); } } final org.elasticsearch.common.hash.MurmurHash3.Hash128 hash = new org.elasticsearch.common.hash.MurmurHash3.Hash128(); try (LongArray hashes = bigArrays.newLongArray(maxOrd, false)) { for (int ord = allVisitedOrds.nextSetBit(0); ord < DocIdSetIterator.NO_MORE_DOCS; ord = ord + 1 < maxOrd ? allVisitedOrds.nextSetBit(ord + 1) : DocIdSetIterator.NO_MORE_DOCS) { final BytesRef value = values.lookupOrd(ord); org.elasticsearch.common.hash.MurmurHash3.hash128(value.bytes, value.offset, value.length, 0, hash); hashes.set(ord, hash.h1); } for (long bucket = visitedOrds.size() - 1; bucket >= 0; --bucket) { final FixedBitSet bits = visitedOrds.get(bucket); if (bits != null) { for (int ord = bits.nextSetBit(0); ord < DocIdSetIterator.NO_MORE_DOCS; ord = ord + 1 < maxOrd ? bits.nextSetBit(ord + 1) : DocIdSetIterator.NO_MORE_DOCS) { counts.collect(bucket, hashes.get(ord)); } } } } }
/** union (term group) bit-sets until they are disjoint (O(n^^2)), and each group have different terms */ private void unionTermGroups(ArrayList<FixedBitSet> bb) { int incr; for (int i=0; i<bb.size()-1; i+=incr) { incr = 1; int j = i+1; while (j<bb.size()) { if (bb.get(i).intersects(bb.get(j))) { bb.get(i).or(bb.get(j)); bb.remove(j); incr = 0; } else { ++j; } } } }
/** union (term group) bit-sets until they are disjoint (O(n^^2)), and each group have different terms */ private void unionTermGroups(ArrayList<FixedBitSet> bb) { int incr; for (int i=0; i<bb.size()-1; i+=incr) { incr = 1; int j = i+1; while (j<bb.size()) { if (bb.get(i).intersects(bb.get(j))) { bb.get(i).or(bb.get(j)); bb.remove(j); incr = 0; } else { ++j; } } } }
/** * Returns the highest value shared by all dimensions. */ protected synchronized int getMaximumSharedWeight() { int thismaximum = 0; tempSet.xor(tempSet); // Reset tempset to zeros. for (int x = votingRecord.size() - 1; x >= 0; x--) { tempSet.or(votingRecord.get(x)); if (tempSet.cardinality() == dimension) { thismaximum += (int) Math.pow(2, x); tempSet.xor(tempSet); } } return thismaximum; }
/** * Just removes our overlaid deletions - does not undelete the original * deletions. */ @Override protected void doUndeleteAll() throws CorruptIndexException, IOException { dels = new FixedBitSet(in.maxDoc()); if (oldDels != null) { dels.or(oldDels); } }
@Override public void or(DocIdSetIterator iter) throws IOException { if (BitSetIterator.getFixedBitSetOrNull(iter) != null) { assertUnpositioned(iter); final FixedBitSet bits = BitSetIterator.getFixedBitSetOrNull(iter); or(bits); } else { super.or(iter); } }
@Override public void or(DocIdSetIterator iter) throws IOException { if (BitSetIterator.getFixedBitSetOrNull(iter) != null) { assertUnpositioned(iter); final FixedBitSet bits = BitSetIterator.getFixedBitSetOrNull(iter); or(bits); } else { super.or(iter); } }
@Override public void or(DocIdSetIterator iter) throws IOException { if (BitSetIterator.getFixedBitSetOrNull(iter) != null) { checkUnpositioned(iter); final FixedBitSet bits = BitSetIterator.getFixedBitSetOrNull(iter); or(bits); } else { super.or(iter); } }
private TermsEnum getAutoPrefixTermsEnum(Terms terms, final PrefixTerm prefix) throws IOException { assert prefixDocs != null; prefixDocs.clear(0, prefixDocs.length()); prefixTermsEnum = prefix.getTermsEnum(terms.iterator()); //System.out.println("BTTW.getAutoPrefixTE: prefix=" + prefix); while (prefixTermsEnum.next() != null) { //System.out.println(" got term=" + prefixTermsEnum.term().utf8ToString()); //termCount++; prefixDocsEnum = prefixTermsEnum.postings(prefixDocsEnum, 0); //System.out.println(" " + prefixDocsEnum + " doc=" + prefixDocsEnum.docID()); prefixDocs.or(prefixDocsEnum); } //System.out.println(" done terms: " + prefixDocs.cardinality() + " doc seen; " + termCount + " terms seen"); return prefixFixedBitsTermsEnum; }
private TermsEnum getAutoPrefixTermsEnum(Terms terms, final PrefixTerm prefix) throws IOException { assert prefixDocs != null; prefixDocs.clear(0, prefixDocs.length()); prefixTermsEnum = prefix.getTermsEnum(terms.iterator()); //System.out.println("BTTW.getAutoPrefixTE: prefix=" + prefix); while (prefixTermsEnum.next() != null) { //System.out.println(" got term=" + prefixTermsEnum.term().utf8ToString()); //termCount++; prefixDocsEnum = prefixTermsEnum.postings(prefixDocsEnum, 0); //System.out.println(" " + prefixDocsEnum + " doc=" + prefixDocsEnum.docID()); prefixDocs.or(prefixDocsEnum); } //System.out.println(" done terms: " + prefixDocs.cardinality() + " doc seen; " + termCount + " terms seen"); return prefixFixedBitsTermsEnum; }
public FakeDeleteIndexReader(IndexReader in) { super(in); dels = new FixedBitSet(in.maxDoc()); if (in.hasDeletions()) { oldDels = new FixedBitSet(in.maxDoc()); for (int i = 0; i < in.maxDoc(); i++) { if (in.isDeleted(i)) oldDels.set(i); } dels.or(oldDels); } }
@Test public void testWithFixedBitSet() throws IOException { FixedBitSet idSet1 = new FixedBitSet( 12 ); idSet1.or( integersToDocIdSet( 0, 5, 6, 10 ).iterator() ); FixedBitSet idSet2 = new FixedBitSet( 7 ); idSet2.set( 6 ); AndDocIdSet actual = createAndDocIdSet( new BitDocIdSet( idSet1 ), new BitDocIdSet( idSet2 ) ); DocIdSet expected = integersToDocIdSet( 6 ); assertTrue( docIdSetsEqual( expected, actual ) ); }