/*------------------------------------------------------------------------------ * 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_ConjunctionScorer_ #define _lucene_search_ConjunctionScorer_ #if defined(_LUCENE_PRAGMA_ONCE) # pragma once #endif #include "Scorer.h" #include "Similarity.h" CL_NS_DEF(search) /** Scorer for conjunctions, sets of queries, all of which are required. */ class ConjunctionScorer: public Scorer { private: CL_NS(util)::CLLinkedList > scorers; bool firstTime; bool more; float_t coord; Scorer* first(); Scorer* last(); void sortScorers(); bool doNext(); void init(); public: ConjunctionScorer(Similarity* similarity); virtual ~ConjunctionScorer(); TCHAR* toString(void){ return STRDUP_TtoT(_T("ConjunctionScorer")); } void add(Scorer* scorer); int32_t doc(); bool next(); bool skipTo(int32_t target); float_t score(); virtual Explanation* explain(int32_t doc) { _CLTHROWA(CL_ERR_UnsupportedOperation,"UnsupportedOperationException()"); } }; CL_NS_END #endif