Package org.apache.lucene.search

Examples of org.apache.lucene.search.DocIdSetIterator


        }
        if (set == DocIdSet.EMPTY_DOCIDSET) {
            return DocSet.EMPTY_DOC_SET;
        }

        DocIdSetIterator it = set.iterator();
        if (it == null) {
            return DocSet.EMPTY_DOC_SET;
        }
        int doc = it.nextDoc();
        if (doc == DocIdSetIterator.NO_MORE_DOCS) {
            return DocSet.EMPTY_DOC_SET;
        }

        // we have a LAB, check if can be used...
        if (longsLAB == null) {
            return DocSets.cacheable(reader, set);
        }

        int numOfWords = OpenBitSet.bits2words(reader.maxDoc());
        LongsLAB.Allocation allocation = longsLAB.allocateLongs(numOfWords);
        if (allocation == null) {
            return DocSets.cacheable(reader, set);
        }
        // we have an allocation, use it to create SlicedOpenBitSet
        if (set instanceof OpenBitSet) {
            return new SlicedOpenBitSet(allocation.getData(), allocation.getOffset(), (OpenBitSet) set);
        } else if (set instanceof OpenBitDocSet) {
            return new SlicedOpenBitSet(allocation.getData(), allocation.getOffset(), ((OpenBitDocSet) set).set());
        } else {
            SlicedOpenBitSet slicedSet = new SlicedOpenBitSet(allocation.getData(), numOfWords, allocation.getOffset());
            slicedSet.fastSet(doc); // we already have an open iterator, so use it, and don't forget to set the initial one
            while ((doc = it.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
                slicedSet.fastSet(doc);
            }
            return slicedSet;
        }
    }
View Full Code Here


      ans[i]=i;
    }

    DocIDMapperImpl mapper = new DocIDMapperImpl(even);
    UIDDocIdSet uidSet = new UIDDocIdSet(even, mapper);
    DocIdSetIterator docidIter = uidSet.iterator();
    IntArrayList intList = new IntArrayList();
    int docid;
    while((docid=docidIter.nextDoc())!=DocIdSetIterator.NO_MORE_DOCS){
      intList.add(docid);
    }
    assertTrue("wrong result from iter", Arrays.equals(ans, intList.toIntArray()));

    long[] newidArray = new long[count];
    for (int i=0;i<count;++i){
      newidArray[i]=i;
    }

    mapper = new DocIDMapperImpl(newidArray);
    uidSet = new UIDDocIdSet(newidArray, mapper);
    docidIter = uidSet.iterator();
    intList = new IntArrayList();
    for (int i=0;i<newidArray.length;++i){
      docid = docidIter.advance(i*10);
      if (docid == DocIdSetIterator.NO_MORE_DOCS) break;
      intList.add(docid);
      docid = docidIter.nextDoc();
      if (docid == DocIdSetIterator.NO_MORE_DOCS) break;
      intList.add(docid);
    }

    int[] answer = new int[]{0,1,10,11,20,21,30,31,40,41,50,51,60,61,70,71,80,81,90,91};
View Full Code Here

      return idSet.toIntArray();
  }
   
  @Override
  public DocIdSetIterator iterator() {
    return new DocIdSetIterator(){
      int doc = -1;
      int current = -1;
      @Override
      public int docID() {
        return doc;
View Full Code Here

  }
 
  @Override
  public DocIdSetIterator iterator()
  {
    return new DocIdSetIterator()
    {
      int doc = -1;
      int current = -1;
      int largest = _lengthminusone;
      @Override
View Full Code Here

        return false;
//        return set.isCacheable();
    }

    @Override public DocIdSetIterator iterator() throws IOException {
        DocIdSetIterator it = set.iterator();
        if (it == null) {
            return new AllDocSet.AllDocIdSetIterator(max);
        }
        return new NotDocIdSetIterator(max, it);
    }
View Full Code Here

        OrDocIdSetIterator() throws IOException {
            _curDoc = -1;
            _heap = new Item[sets.size()];
            _size = 0;
            for (DocIdSet set : sets) {
                DocIdSetIterator iterator = set.iterator();
                if (iterator != null) {
                    _heap[_size++] = new Item(iterator);
                }
            }
            if (_size == 0) _curDoc = DocIdSetIterator.NO_MORE_DOCS;
View Full Code Here

        public final int nextDoc() throws IOException {
            if (_curDoc == DocIdSetIterator.NO_MORE_DOCS) return DocIdSetIterator.NO_MORE_DOCS;

            Item top = _heap[0];
            while (true) {
                DocIdSetIterator topIter = top.iter;
                int docid;
                if ((docid = topIter.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
                    top.doc = docid;
                    heapAdjust();
                } else {
                    heapRemoveRoot();
                    if (_size == 0) return (_curDoc = DocIdSetIterator.NO_MORE_DOCS);
View Full Code Here

            if (target <= _curDoc) target = _curDoc + 1;

            Item top = _heap[0];
            while (true) {
                DocIdSetIterator topIter = top.iter;
                int docid;
                if ((docid = topIter.advance(target)) != DocIdSetIterator.NO_MORE_DOCS) {
                    top.doc = docid;
                    heapAdjust();
                } else {
                    heapRemoveRoot();
                    if (_size == 0) return (_curDoc = DocIdSetIterator.NO_MORE_DOCS);
View Full Code Here

            for (DocIdSet set : sets) {
                if (set == null) {
                    lastReturn = DocIdSetIterator.NO_MORE_DOCS; // non matching
                    break;
                } else {
                    DocIdSetIterator dcit = set.iterator();
                    if (dcit == null) {
                        lastReturn = DocIdSetIterator.NO_MORE_DOCS; // non matching
                        break;
                    }
                    iterators[j++] = dcit;
View Full Code Here

        @Override
        public final int nextDoc() throws IOException {

            if (lastReturn == DocIdSetIterator.NO_MORE_DOCS) return DocIdSetIterator.NO_MORE_DOCS;

            DocIdSetIterator dcit = iterators[0];
            int target = dcit.nextDoc();
            int size = iterators.length;
            int skip = 0;
            int i = 1;
            while (i < size) {
                if (i != skip) {
                    dcit = iterators[i];
                    int docid = dcit.advance(target);
                    if (docid > target) {
                        target = docid;
                        if (i != 0) {
                            skip = i;
                            i = 0;
View Full Code Here

TOP

Related Classes of org.apache.lucene.search.DocIdSetIterator

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.