Examples of DocIdSetIterator


Examples of org.apache.lucene.search.DocIdSetIterator

   * @param val value to find the index for
   * @return index where the value is
   */
  @Override
  public int findWithIndex(int val) throws IOException {
    DocIdSetIterator finder = new OrDocIdSetIterator(sets);
    int cursor = -1;
    try {
      int docid;
      while ((docid = finder.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
        if (docid > val) return -1;
        else if (docid == val) return ++cursor;
        else ++cursor;

      }
View Full Code Here

Examples of org.apache.lucene.search.DocIdSetIterator

  @Override
  public int size() throws IOException {

    if (_size == INVALID) {
      _size = 0;
      DocIdSetIterator it = this.iterator();

      try {
        while (it.nextDoc() != DocIdSetIterator.NO_MORE_DOCS)
          _size++;
      } catch (IOException e) {
        e.printStackTrace();
        _size = INVALID;
      }
View Full Code Here

Examples of org.apache.lucene.search.DocIdSetIterator

    // if an iterator disagrees (it jumped longer), it's current position becomes the new targetPosition
    // for the others and he is considered "first" in the voting round (every iterator votes for himself ;-)
    int i = 0;
    //iterator initialize, just one "next" for each DocIdSetIterator
    for ( ; i<iteratorSize; i++ ) {
      final DocIdSetIterator iterator = iterators[i];
      if ( ! iterator.next() ) {
        //current iterator has no values, so skip all
        return EmptyDocIdBitSet.instance;
      }
      final int position = iterator.doc();
      if ( targetPosition==position ) {
        votes++; //stopped as same position of others
      }
      else {
        targetPosition = max( targetPosition, position );
        if (targetPosition==position) //means it changed
          votes=1;
      }
    }
    final OpenBitSet result = new OpenBitSet( maxDocNumber );
    // end iterator initialize
    if (votes==iteratorSize) {
      result.fastSet( targetPosition );
      targetPosition++;
    }
    i=0;
    votes=0; //could be smarted but would make the code even more complex for a minor optimization out of cycle.
    // enter main loop:
    while ( true ) {
      final DocIdSetIterator iterator = iterators[i];
      final boolean validPosition = iterator.skipTo( targetPosition );
      if ( ! validPosition )
        return result; //exit condition
      final int position = iterator.doc();
      if ( position == targetPosition ) {
        if ( ++votes == iteratorSize ) {
          result.fastSet( position );
          votes = 0;
          targetPosition++;
View Full Code Here

Examples of org.apache.lucene.search.DocIdSetIterator

        final int max = base + maxDoc;   // one past the max doc in this segment.

        return new DocIdSet() {
          @Override
          public DocIdSetIterator iterator() throws IOException {
            return new DocIdSetIterator() {
              int pos=base-1;
              int adjustedDoc=-1;

              @Override
              public int docID() {
View Full Code Here

Examples of org.apache.lucene.search.DocIdSetIterator


        return new DocIdSet() {
          @Override
          public DocIdSetIterator iterator() throws IOException {
            return new DocIdSetIterator() {
              int idx = startIdx;
              int adjustedDoc = -1;

              public int doc() {
                return adjustedDoc;
View Full Code Here

Examples of org.apache.lucene.search.DocIdSetIterator

      super(reader);
     
      final OpenBitSetDISI bits = new OpenBitSetDISI(in.maxDoc());
      final DocIdSet docs = preserveFilter.getDocIdSet(in);
      if (docs != null) {
        final DocIdSetIterator it = docs.iterator();
        if (it != null) {
          bits.inPlaceOr(it);
        }
      }
      // this is somehow inverse, if we negate the filter, we delete all documents it matches!
View Full Code Here

Examples of org.apache.lucene.search.DocIdSetIterator

    for (QueryAndLimit ent : queriesIter) {
      Query query = ent.query;
      int limit = ent.limit;
      final DocIdSet docs = new QueryWrapperFilter(query).getDocIdSet(reader);
      if (docs != null) {
        final DocIdSetIterator it = docs.iterator();
        if (it != null) {
          while(true)  {
            int doc = it.nextDoc();
            if (doc >= limit)
              break;

            reader.deleteDocument(doc);
            // TODO: we could/should change
View Full Code Here

Examples of org.apache.lucene.search.DocIdSetIterator

    //TODO if some andedDocIdSets are DocIdBitSet, merge them first.
    int size = andedDocIdSets.size();
    DocIdSetIterator[] iterators = new DocIdSetIterator[size];
    for ( int i = 0; i < size; i++ ) {
      // build all iterators
      DocIdSetIterator docIdSetIterator = andedDocIdSets.get( i ).iterator();
      if ( docIdSetIterator == null ) {
        // the Lucene API permits to return null on any iterator for empty matches
        return DocIdSet.EMPTY_DOCIDSET;
      }
      iterators[i] = docIdSetIterator;
View Full Code Here

Examples of org.apache.lucene.search.DocIdSetIterator

    int i = 0;
    int votes = 0; //could be smarter but would make the code even more complex for a minor optimization out of cycle.
    // enter main loop:
    while ( true ) {
      final DocIdSetIterator iterator = iterators[i];
      int position = targetPosition;
      if ( !iteratorAlreadyOnTargetPosition( targetPosition, iterator ) ) {
        position = iterator.advance( targetPosition );
      }
      if ( position == DocIdSetIterator.NO_MORE_DOCS ) {
        return result;
      } //exit condition
      if ( position == targetPosition ) {
View Full Code Here

Examples of org.apache.lucene.search.DocIdSetIterator

    boolean allIteratorsShareSameFirstTarget = true;

    //iterator initialize, just one "next" for each DocIdSetIterator
    for ( int i = 1; i < iterators.length; i++ ) {
      final DocIdSetIterator iterator = iterators[i];
      final int position = iterator.nextDoc();
      if ( position == DocIdSetIterator.NO_MORE_DOCS ) {
        //current iterator has no values, so skip all
        return DocIdSetIterator.NO_MORE_DOCS;
      }
      if ( targetPosition != position ) {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.