Class NearSpansOrdered


  • public class NearSpansOrdered
    extends Spans
    A Spans that is formed from the ordered subspans of a SpanNearQuery where the subspans do not overlap and have a maximum slop between them.

    The formed spans only contains minimum slop matches.
    The matching slop is computed from the distance(s) between the non overlapping matching Spans.
    Successive matches are always formed from the successive Spans of the SpanNearQuery.

    The formed spans may contain overlaps when the slop is at least 1. For example, when querying using

    t1 t2 t3
    with slop at least 1, the fragment:
    t1 t2 t1 t3 t2 t3
    matches twice:
    t1 t2 .. t3      
          t1 .. t2 t3
    Expert: Only public for subclassing. Most implementations should not need this class
    • Method Detail

      • doc

        public int doc()
        Description copied from class: Spans
        Returns the document number of the current match. Initially invalid.
        Specified by:
        doc in class Spans
      • start

        public int start()
        Description copied from class: Spans
        Returns the start position of the current match. Initially invalid.
        Specified by:
        start in class Spans
      • end

        public int end()
        Description copied from class: Spans
        Returns the end position of the current match. Initially invalid.
        Specified by:
        end in class Spans
      • getSubSpans

        public Spans[] getSubSpans()
      • getPayload

        public Collection<byte[]> getPayload()
                                      throws IOException
        Description copied from class: Spans
        Returns the payload data for the current span. This is invalid until Spans.next() is called for the first time. This method must not be called more than once after each call of Spans.next(). However, most payloads are loaded lazily, so if the payload data for the current position is not needed, this method may not be called at all for performance reasons. An ordered SpanQuery does not lazy load, so if you have payloads in your index and you do not want ordered SpanNearQuerys to collect payloads, you can disable collection with a constructor option.

        Note that the return type is a collection, thus the ordering should not be relied upon.
        Specified by:
        getPayload in class Spans
        Returns:
        a List of byte arrays containing the data of this payload, otherwise null if isPayloadAvailable is false
        Throws:
        IOException - if there is a low-level I/O error
      • isPayloadAvailable

        public boolean isPayloadAvailable()
        Description copied from class: Spans
        Checks if a payload can be loaded at this position.

        Payloads can only be loaded once per call to Spans.next().

        Specified by:
        isPayloadAvailable in class Spans
        Returns:
        true if there is a payload available at this position that can be loaded
      • cost

        public long cost()
        Description copied from class: Spans
        Returns the estimated cost of this spans.

        This is generally an upper bound of the number of documents this iterator might match, but may be a rough heuristic, hardcoded value, or otherwise completely inaccurate.

        Specified by:
        cost in class Spans
      • next

        public boolean next()
                     throws IOException
        Description copied from class: Spans
        Move to the next match, returning true iff any such exists.
        Specified by:
        next in class Spans
        Throws:
        IOException
      • skipTo

        public boolean skipTo​(int target)
                       throws IOException
        Description copied from class: Spans
        Skips to the first match beyond the current, whose document number is greater than or equal to target.

        The behavior of this method is undefined when called with target ≤ current, or after the iterator has exhausted. Both cases may result in unpredicted behavior.

        Returns true iff there is such a match.

        Behaves as if written:

           boolean skipTo(int target) {
             do {
               if (!next())
                 return false;
             } while (target > doc());
             return true;
           }
         
        Most implementations are considerably more efficient than that.
        Specified by:
        skipTo in class Spans
        Throws:
        IOException