Logo Search packages:      
Sourcecode: qt4-x11 version File versions

PhraseScorer.h

/*------------------------------------------------------------------------------
* 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_PhraseScorer_
#define _lucene_search_PhraseScorer_

#if defined(_LUCENE_PRAGMA_ONCE)
# pragma once
#endif

#include "PhraseQueue.h"
#include "PhrasePositions.h"
#include "Scorer.h"
#include "Similarity.h"

CL_NS_DEF(search)

      class PhraseScorer: public Scorer {
      private:
            Weight* weight;
            float_t freq;
            bool firstTime;
            bool more;

      protected:
            uint8_t* norms;
            float_t value;

            PhraseQueue* pq;        //is used to order the list point to by first and last
            PhrasePositions* first; //Points to the first in the list of PhrasePositions
            PhrasePositions* last;  //Points to the last in the list of PhrasePositions

      public:
            //Constructor
            PhraseScorer(Weight* weight, CL_NS(index)::TermPositions** tps, 
            int32_t* positions, Similarity* similarity, uint8_t* norms);
            virtual ~PhraseScorer();

            int32_t doc() const { return first->doc; }
            bool next();
            float_t score();
            bool skipTo(int32_t target);


            void explain(int32_t doc, Explanation* ret);
            TCHAR* toString();
      protected:
            virtual float_t phraseFreq() =0;

        //Transfers the PhrasePositions from the PhraseQueue pq to
        //the PhrasePositions list with first as its first element
            void pqToList();

            //Moves first to the end of the list
            void firstToLast();
      private:
            bool doNext();
            void init();
            void sort();
      };
CL_NS_END
#endif

Generated by  Doxygen 1.6.0   Back to index