MtasSpanEndSpans.java

  1. package mtas.search.spans;

  2. import java.io.IOException;

  3. import org.apache.lucene.search.TwoPhaseIterator;
  4. import org.apache.lucene.search.spans.SpanCollector;
  5. import org.apache.lucene.search.spans.Spans;

  6. import mtas.search.spans.util.MtasSpans;

  7. /**
  8.  * The Class MtasSpanEndSpans.
  9.  */
  10. public class MtasSpanEndSpans extends MtasSpans {

  11.   /** The query. */
  12.   private MtasSpanEndQuery query;

  13.   /** The spans. */
  14.   private Spans spans;

  15.   /**
  16.    * Instantiates a new mtas span end spans.
  17.    *
  18.    * @param query the query
  19.    * @param spans the spans
  20.    */
  21.   public MtasSpanEndSpans(MtasSpanEndQuery query, Spans spans) {
  22.     super();
  23.     this.query = query;
  24.     this.spans = spans;
  25.   }

  26.   /*
  27.    * (non-Javadoc)
  28.    *
  29.    * @see org.apache.lucene.search.spans.Spans#nextStartPosition()
  30.    */
  31.   @Override
  32.   public int nextStartPosition() throws IOException {
  33.     spans.nextStartPosition();
  34.     return startPosition();
  35.   }

  36.   /*
  37.    * (non-Javadoc)
  38.    *
  39.    * @see org.apache.lucene.search.spans.Spans#startPosition()
  40.    */
  41.   @Override
  42.   public int startPosition() {
  43.     return (spans == null) ? -1 : spans.endPosition();
  44.   }

  45.   /*
  46.    * (non-Javadoc)
  47.    *
  48.    * @see org.apache.lucene.search.spans.Spans#endPosition()
  49.    */
  50.   @Override
  51.   public int endPosition() {
  52.     return (spans == null) ? -1 : spans.endPosition();
  53.   }

  54.   /*
  55.    * (non-Javadoc)
  56.    *
  57.    * @see org.apache.lucene.search.spans.Spans#width()
  58.    */
  59.   @Override
  60.   public int width() {
  61.     return 0;
  62.   }

  63.   /*
  64.    * (non-Javadoc)
  65.    *
  66.    * @see
  67.    * org.apache.lucene.search.spans.Spans#collect(org.apache.lucene.search.spans
  68.    * .SpanCollector)
  69.    */
  70.   @Override
  71.   public void collect(SpanCollector collector) throws IOException {
  72.     if (spans != null) {
  73.       spans.collect(collector);
  74.     }
  75.   }

  76.   /*
  77.    * (non-Javadoc)
  78.    *
  79.    * @see org.apache.lucene.search.DocIdSetIterator#docID()
  80.    */
  81.   @Override
  82.   public int docID() {
  83.     return (spans == null) ? NO_MORE_DOCS : spans.docID();
  84.   }

  85.   /*
  86.    * (non-Javadoc)
  87.    *
  88.    * @see org.apache.lucene.search.DocIdSetIterator#nextDoc()
  89.    */
  90.   @Override
  91.   public int nextDoc() throws IOException {
  92.     return (spans == null) ? NO_MORE_DOCS : spans.nextDoc();
  93.   }

  94.   /*
  95.    * (non-Javadoc)
  96.    *
  97.    * @see org.apache.lucene.search.DocIdSetIterator#advance(int)
  98.    */
  99.   @Override
  100.   public int advance(int target) throws IOException {
  101.     return (spans == null) ? NO_MORE_DOCS : spans.advance(target);
  102.   }

  103.   /*
  104.    * (non-Javadoc)
  105.    *
  106.    * @see org.apache.lucene.search.DocIdSetIterator#cost()
  107.    */
  108.   @Override
  109.   public long cost() {
  110.     return (spans == null) ? 0 : spans.cost();
  111.   }

  112.   /*
  113.    * (non-Javadoc)
  114.    *
  115.    * @see org.apache.lucene.search.spans.Spans#asTwoPhaseIterator()
  116.    */
  117.   @Override
  118.   public TwoPhaseIterator asTwoPhaseIterator() {
  119.     if (spans == null || !query.twoPhaseIteratorAllowed()) {
  120.       return null;
  121.     } else {
  122.       return spans.asTwoPhaseIterator();
  123.     }
  124.   }

  125.   /*
  126.    * (non-Javadoc)
  127.    *
  128.    * @see org.apache.lucene.search.spans.Spans#positionsCost()
  129.    */
  130.   @Override
  131.   public float positionsCost() {
  132.     return (spans == null) ? 0 : spans.positionsCost();
  133.   }

  134. }