/*------------------------------------------------------------------------------ * 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_Scorer_ #define _lucene_search_Scorer_ #if defined(_LUCENE_PRAGMA_ONCE) # pragma once #endif #include "Similarity.h" #include "SearchHeader.h" #include "Explanation.h" CL_NS_DEF(search) /** Expert: Implements scoring for a class of queries. */ class Scorer: LUCENE_BASE { private: Similarity* similarity; protected: /** Constructs a Scorer. */ Scorer(Similarity* similarity) { this->similarity = similarity; } public: virtual ~Scorer(){ } /** Returns the Similarity implementation used by this scorer. */ Similarity* getSimilarity() { return this->similarity; } /** Scores all documents and passes them to a collector. */ void score(HitCollector* hc) { while (next()) { hc->collect(doc(), score()); } } /** Advance to the next document matching the query. Returns true iff there * is another match. */ virtual bool next() = 0; /** Returns the current document number. Initially invalid, until {@link * #next()} is called the first time. */ virtual int32_t doc() = 0; /** Returns the score of the current document. Initially invalid, until * {@link #next()} is called the first time. */ virtual float_t score() = 0; /** 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(int32_t target) { * do { * if (!next()) * return false; * } while (target > doc()); * return true; * } ** Most implementations are considerably more efficient than that. */ virtual bool skipTo(int32_t target) = 0; /** Returns an explanation of the score for
doc
. */
virtual Explanation* explain(int32_t doc) = 0;
/** Returns an string which explains the object */
virtual TCHAR* toString() = 0;
};
CL_NS_END
#endif