/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Collections.Generic; namespace Lucene.Net.Search.Spans { /// Expert: an enumeration of span matches. Used to implement span searching. /// Each span represents a range of term positions within a document. Matches /// are enumerated in order, by increasing document number, within that by /// increasing start position and finally by increasing end position. /// public abstract class Spans { /// Move to the next match, returning true iff any such exists. public abstract bool Next(); /// Skips to the first match beyond the current, whose document number is /// greater than or equal to target.

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. ///

public abstract bool SkipTo(int target); /// Returns the document number of the current match. Initially invalid. public abstract int Doc(); /// Returns the start position of the current match. Initially invalid. public abstract int Start(); /// Returns the end position of the current match. Initially invalid. public abstract int End(); /// Returns the payload data for the current span. /// This is invalid until is called for /// the first time. /// This method must not be called more than once after each call /// of . 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. ///
///

/// WARNING: The status of the Payloads feature is experimental. /// The APIs introduced here might change in the future and will not be /// supported anymore in such a case.

/// ///

/// a List of byte arrays containing the data of this payload, otherwise null if isPayloadAvailable is false /// java.io.IOException // TODO: Remove warning after API has been finalized [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] public abstract ICollection GetPayload(); /// Checks if a payload can be loaded at this position. ///

/// Payloads can only be loaded once per call to /// . /// ///

/// true if there is a payload available at this position that can be loaded public abstract bool IsPayloadAvailable(); } }