/*------------------------------------------------------------------------------
* 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_SpanNotQuery_
#define _lucene_search_spans_SpanNotQuery_
CL_CLASS_DEF(index, IndexReader);
#include "SpanQuery.h"
CL_NS_DEF2( search, spans )
/** Removes matches which overlap with another SpanQuery. */
class CLUCENE_EXPORT SpanNotQuery : public SpanQuery
{
private:
class SpanNotQuerySpans;
private:
SpanQuery * include;
SpanQuery * exclude;
bool bDeleteQueries;
protected:
SpanNotQuery( const SpanNotQuery& clone );
public:
/** Construct a SpanNotQuery matching spans from include which
* have no overlap with spans from exclude.*/
SpanNotQuery( SpanQuery * include, SpanQuery * exclude, bool bDeleteQueries );
virtual ~SpanNotQuery();
CL_NS(search)::Query * clone() const;
static const char * getClassName();
const char * getObjectName() const;
/** Return the SpanQuery whose matches are filtered. */
SpanQuery * getInclude() const;
/** Return the SpanQuery whose matches must not overlap those returned. */
SpanQuery * getExclude() 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 include.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_SpanNotQuery_