/*------------------------------------------------------------------------------
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
*
* Distributable under the terms of either the Apache License (Version 2.0) or
* the GNU Lesser General Public License, as specified in the COPYING file.
------------------------------------------------------------------------------*/
#ifndef _lucene_search_spans_FirstSpanQuery_
#define _lucene_search_spans_FirstSpanQuery_
CL_CLASS_DEF(index, IndexReader);
#include "SpanQuery.h"
CL_NS_DEF2( search, spans )
/** Matches spans near the beginning of a field. */
class CLUCENE_EXPORT SpanFirstQuery : public SpanQuery
{
private:
class SpanFirstQuerySpans;
private:
SpanQuery * match;
bool bDeleteQuery;
int32_t end;
protected:
SpanFirstQuery( const SpanFirstQuery& clone );
public:
/** Construct a SpanFirstQuery matching spans in match whose end
* position is less than or equal to end. */
SpanFirstQuery( SpanQuery * match, int32_t end, bool bDeleteQuery );
virtual ~SpanFirstQuery();
CL_NS(search)::Query * clone() const;
static const char * getClassName();
const char * getObjectName() const;
/** Return the SpanQuery whose matches are filtered. */
SpanQuery * getMatch() const;
/** Return the maximum end position permitted in a match. */
int32_t getEnd() const;
const TCHAR * getField() const;
/** Returns a collection of all terms matched by this query.
* @deprecated use extractTerms instead
* @see #extractTerms(Set)
*/
// public Collection getTerms() { return match.getTerms(); }
void extractTerms( CL_NS(search)::TermSet * terms ) const;
CL_NS(search)::Query * rewrite( CL_NS(index)::IndexReader * reader );
using Query::toString;
TCHAR* toString( const TCHAR* field ) const;
bool equals( Query* other ) const;
size_t hashCode() const;
Spans * getSpans( CL_NS(index)::IndexReader * reader );
};
CL_NS_END2
#endif // _lucene_search_spans_FirstSpanQuery_