/*------------------------------------------------------------------------------ * 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_SpanQueryFilter_ #define _lucene_search_SpanQueryFilter_ #include "SpanFilter.h" #include "spans/SpanQuery.h" CL_NS_DEF(search) /** * Constrains search results to only match those which also match a provided * query. Also provides position information about where each document matches * at the cost of extra space compared with the QueryWrapperFilter. * There is an added cost to this above what is stored in a {@link QueryWrapperFilter}. Namely, * the position information for each matching document is stored. *
* This filter does not cache. See the {@link org.apache.lucene.search.CachingSpanFilter} for a wrapper that * caches. * * @version $Id:$ */ class CLUCENE_EXPORT SpanQueryFilter : public SpanFilter { protected: CL_NS2(search,spans)::SpanQuery * query; bool bDeleteQuery; protected: SpanQueryFilter(); SpanQueryFilter( const SpanQueryFilter& copy ); public: /** Constructs a filter which only matches documents matching *query.
* @param query The {@link org.apache.lucene.search.spans.SpanQuery} to use as the basis for the Filter.
*/
SpanQueryFilter( const CL_NS2(search,spans)::SpanQuery * query );
SpanQueryFilter( CL_NS2(search,spans)::SpanQuery * query, bool bDeleteQuery );
virtual ~SpanQueryFilter();
virtual Filter* clone() const;
virtual CL_NS(util)::BitSet* bits( CL_NS(index)::IndexReader * reader );
virtual SpanFilterResult * bitSpans( CL_NS(index)::IndexReader * reader );
CL_NS2(search,spans)::SpanQuery * getQuery();
virtual TCHAR* toString();
// public boolean equals( Object o ) {
// return o instanceof SpanQueryFilter && this.query.equals(((SpanQueryFilter) o).query);
// }
//
// public int hashCode() {
// return query.hashCode() ^ 0x923F64B9;
// }
};
inline CL_NS2(search,spans)::SpanQuery * SpanQueryFilter::getQuery()
{
return query;
}
CL_NS_END
#endif // _lucene_search_SpanQueryFilter_