FileDocCategorySizeDatePackage
SpanTermQuery.javaAPI DocApache Lucene 1.4.32923Mon Feb 09 22:03:42 GMT 2004org.apache.lucene.search.spans

SpanTermQuery

public class SpanTermQuery extends SpanQuery
Matches spans containing a term.

Fields Summary
private Term
term
Constructors Summary
public SpanTermQuery(Term term)
Construct a SpanTermQuery matching the named term's spans.

 this.term = term; 
Methods Summary
public java.lang.StringgetField()

 return term.field(); 
public org.apache.lucene.search.spans.SpansgetSpans(org.apache.lucene.index.IndexReader reader)

    return new Spans() {
        private TermPositions positions = reader.termPositions(term);

        private int doc = -1;
        private int freq;
        private int count;
        private int position;

        public boolean next() throws IOException {
          if (count == freq) {
            if (!positions.next()) {
              doc = Integer.MAX_VALUE;
              return false;
            }
            doc = positions.doc();
            freq = positions.freq();
            count = 0;
          }
          position = positions.nextPosition();
          count++;
          return true;
        }

        public boolean skipTo(int target) throws IOException {
          if (!positions.skipTo(target)) {
            doc = Integer.MAX_VALUE;
            return false;
          }

          doc = positions.doc();
          freq = positions.freq();
          count = 0;

          position = positions.nextPosition();
          count++;

          return true;
        }

        public int doc() { return doc; }
        public int start() { return position; }
        public int end() { return position + 1; }

        public String toString() {
          return "spans(" + SpanTermQuery.this.toString() + ")@"+
            (doc==-1?"START":(doc==Integer.MAX_VALUE)?"END":doc+"-"+position);
        }

      };
  
public org.apache.lucene.index.TermgetTerm()
Return the term whose spans are matched.

 return term; 
public java.util.CollectiongetTerms()

    Collection terms = new ArrayList();
    terms.add(term);
    return terms;
  
public java.lang.StringtoString(java.lang.String field)

    if (term.field().equals(field))
      return term.text();
    else
      return term.toString();