00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef INDRI_CACHEDFREQUENCYBELIEFNODE_HPP
00019 #define INDRI_CACHEDFREQUENCYBELIEFNODE_HPP
00020
00021 #include "indri/Annotator.hpp"
00022 #include "indri/ScoredExtentResult.hpp"
00023 #include <string>
00024 #include "indri/TermScoreFunction.hpp"
00025 #include "indri/ListBeliefNode.hpp"
00026 #include "indri/ListCache.hpp"
00027 namespace indri
00028 {
00029 namespace infnet
00030 {
00031
00032 class CachedFrequencyBeliefNode : public BeliefNode {
00033 private:
00034 indri::query::TermScoreFunction& _function;
00035 indri::utility::greedy_vector<indri::api::ScoredExtentResult> _extents;
00036 indri::utility::greedy_vector<indri::index::DocumentContextCount>::iterator _iter;
00037 indri::utility::greedy_vector<bool> _matches;
00038 indri::lang::ListCache::CachedList* _list;
00039 double _maximumBackgroundScore;
00040 double _maximumScore;
00041 std::string _name;
00042
00043 public:
00044 CachedFrequencyBeliefNode( const std::string& name,
00045 indri::lang::ListCache::CachedList* list,
00046 indri::query::TermScoreFunction& scoreFunction,
00047 double maximumBackgroundScore,
00048 double maximumScore );
00049
00050 lemur::api::DOCID_T nextCandidateDocument();
00051 void indexChanged( indri::index::Index& index );
00052
00053 double maximumBackgroundScore();
00054 double maximumScore();
00055 const indri::utility::greedy_vector<indri::api::ScoredExtentResult>& score( lemur::api::DOCID_T documentID, int begin, int end, int documentLength );
00056 void annotate( class Annotator& annotator, lemur::api::DOCID_T documentID, int begin, int end );
00057 bool hasMatch( lemur::api::DOCID_T documentID );
00058 const indri::utility::greedy_vector<bool>& hasMatch( lemur::api::DOCID_T documentID, const indri::utility::greedy_vector<indri::index::Extent>& extents );
00059
00060 const std::string& getName() const;
00061 };
00062 }
00063 }
00064
00065 #endif // INDRI_CACHEDFREQUENCYBELIEFNODE_HPP
00066