CLucene - a full-featured, c++ search engine
API Documentation
00001 /*------------------------------------------------------------------------------ 00002 * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team 00003 * 00004 * Distributable under the terms of either the Apache License (Version 2.0) or 00005 * the GNU Lesser General Public License, as specified in the COPYING file. 00006 ------------------------------------------------------------------------------*/ 00007 #ifndef _lucene_search_Similarity_ 00008 #define _lucene_search_Similarity_ 00009 00010 #if defined(_LUCENE_PRAGMA_ONCE) 00011 # pragma once 00012 #endif 00013 00014 #include "CLucene/index/Term.h" 00015 00016 CL_NS_DEF(search) 00017 00018 class Searcher;//save including the searchheader.h 00019 class DefaultSimilarity; 00020 00054 class Similarity:LUCENE_BASE { 00055 public: 00056 virtual ~Similarity(); 00057 00064 static void setDefault(Similarity* similarity); 00065 00074 static Similarity* getDefault(); 00075 00088 static uint8_t encodeNorm(float_t f); 00089 00093 static float_t decodeNorm(uint8_t b); 00094 00095 static uint8_t floatToByte(float_t f); 00096 static float_t byteToFloat(uint8_t b); 00097 00107 float_t idf(CL_NS(util)::CLVector<CL_NS(index)::Term*>* terms, Searcher* searcher); 00108 //float_t idf(Term** terms, Searcher* searcher); 00109 00110 00126 float_t idf(CL_NS(index)::Term* term, Searcher* searcher); 00127 00128 00144 inline float_t tf(int32_t freq){ return tf((float_t)freq); } 00145 00167 virtual float_t lengthNorm(const TCHAR* fieldName, int32_t numTokens) = 0; 00168 00179 virtual float_t queryNorm(float_t sumOfSquaredWeights) = 0; 00180 00194 virtual float_t sloppyFreq(int32_t distance) = 0; 00195 00209 virtual float_t tf(float_t freq) = 0; 00210 00224 virtual float_t idf(int32_t docFreq, int32_t numDocs) = 0; 00225 00238 virtual float_t coord(int32_t overlap, int32_t maxOverlap) = 0; 00239 }; 00240 00241 00243 class DefaultSimilarity: public Similarity { 00244 public: 00245 DefaultSimilarity(); 00246 ~DefaultSimilarity(); 00247 00249 float_t lengthNorm(const TCHAR* fieldName, int32_t numTerms); 00250 00252 float_t queryNorm(float_t sumOfSquaredWeights); 00253 00255 inline float_t tf(float_t freq); 00256 00258 float_t sloppyFreq(int32_t distance); 00259 00261 float_t idf(int32_t docFreq, int32_t numDocs); 00262 00264 float_t coord(int32_t overlap, int32_t maxOverlap); 00265 }; 00266 00267 CL_NS_END 00268 #endif