MtasSpanStartSpans.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 MtasSpanStartSpans.
  9.  */
  10. public class MtasSpanStartSpans extends MtasSpans {

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

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

  15.   /**
  16.    * Instantiates a new mtas span start spans.
  17.    *
  18.    * @param query the query
  19.    * @param spans the spans
  20.    */
  21.   public MtasSpanStartSpans(MtasSpanStartQuery 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.     return (spans == null) ? NO_MORE_POSITIONS : spans.nextStartPosition();
  34.   }

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

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

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

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

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

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

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

  102.   /*
  103.    * (non-Javadoc)
  104.    *
  105.    * @see mtas.search.spans.util.MtasSpans#asTwoPhaseIterator()
  106.    */
  107.   @Override
  108.   public TwoPhaseIterator asTwoPhaseIterator() {
  109.     if (spans == null || !query.twoPhaseIteratorAllowed()) {
  110.       return null;
  111.     } else {
  112.       return spans.asTwoPhaseIterator();
  113.     }
  114.   }

  115.   /*
  116.    * (non-Javadoc)
  117.    *
  118.    * @see org.apache.lucene.search.DocIdSetIterator#cost()
  119.    */
  120.   @Override
  121.   public long cost() {
  122.     return (spans == null) ? 0 : spans.cost();
  123.   }

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

  133. }