Lucene++ - a full-featured, c++ search engine
API Documentation


BooleanScorer.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2014 Alan Wright. All rights reserved.
3 // Distributable under the terms of either the Apache License (Version 2.0)
4 // or the GNU Lesser General Public License.
6 
7 #ifndef BOOLEANSCORER_H
8 #define BOOLEANSCORER_H
9 
10 #include "Scorer.h"
11 #include "Collector.h"
12 
13 namespace Lucene {
14 
30 class LPPAPI BooleanScorer : public Scorer {
31 public:
32  BooleanScorer(const SimilarityPtr& similarity, int32_t minNrShouldMatch, Collection<ScorerPtr> optionalScorers, Collection<ScorerPtr> prohibitedScorers);
33  virtual ~BooleanScorer();
34 
36 
37 
38 protected:
41  int32_t maxCoord;
43  int32_t requiredMask;
44  int32_t prohibitedMask;
45  int32_t nextMask;
47  int32_t end;
49  int32_t doc;
50 
51 protected:
52  // firstDocID is ignored since nextDoc() initializes 'current'
53  virtual bool score(const CollectorPtr& collector, int32_t max, int32_t firstDocID);
54 
55 public:
56  virtual int32_t advance(int32_t target);
57  virtual int32_t docID();
58  virtual int32_t nextDoc();
59  virtual double score();
60  virtual void score(const CollectorPtr& collector);
61  virtual String toString();
62 
63 };
64 
66 public:
67  BooleanScorerCollector(int32_t mask, const BucketTablePtr& bucketTable);
69 
71 
72 protected:
74  int32_t mask;
76 
77 public:
78  virtual void collect(int32_t doc);
79  virtual void setNextReader(const IndexReaderPtr& reader, int32_t docBase);
80  virtual void setScorer(const ScorerPtr& scorer);
81  virtual bool acceptsDocsOutOfOrder();
82 };
83 
84 // An internal class which is used in score(Collector, int32_t) for setting the current score. This is required
85 // since Collector exposes a setScorer method and implementations that need the score will call scorer->score().
86 // Therefore the only methods that are implemented are score() and doc().
87 class BucketScorer : public Scorer {
88 public:
90  virtual ~BucketScorer();
91 
92 
93  int32_t freq;
95  float termFreq(){
96  return freq;
97  }
98 
99 
100 public:
101  double _score;
102  int32_t doc;
103 
104 public:
105  virtual int32_t advance(int32_t target);
106  virtual int32_t docID();
107  virtual int32_t nextDoc();
108  virtual double score();
109 };
110 
111 class Bucket : public LuceneObject {
112 public:
114  virtual ~Bucket();
115 
117 
118 public:
119  int32_t doc; // tells if bucket is valid
120  double score; // incremental score
121  int32_t bits; // used for bool constraints
122  int32_t coord; // count of terms in score
123  BucketWeakPtr _next; // next valid bucket
124 };
125 
127 class BucketTable : public LuceneObject {
128 public:
130  virtual ~BucketTable();
131 
133 
134 public:
135  static const int32_t SIZE;
136  static const int32_t MASK;
137 
139  BucketPtr first; // head of valid list
140 
141 public:
142  CollectorPtr newCollector(int32_t mask);
143  int32_t size();
144 };
145 
146 class SubScorer : public LuceneObject {
147 public:
149  virtual ~SubScorer();
150 
152 
153 public:
155  bool required;
159 };
160 
161 }
162 
163 #endif
Lucene::BooleanScorer::~BooleanScorer
virtual ~BooleanScorer()
Lucene::SubScorer::~SubScorer
virtual ~SubScorer()
Scorer.h
Lucene::BucketScorer::docID
virtual int32_t docID()
Returns the following:
Lucene::SubScorer::scorer
ScorerPtr scorer
Definition: BooleanScorer.h:151
LUCENE_CLASS
#define LUCENE_CLASS(Name)
Definition: LuceneObject.h:24
Lucene::BooleanScorer::scorers
SubScorerPtr scorers
Definition: BooleanScorer.h:35
Lucene::BooleanScorer::advance
virtual int32_t advance(int32_t target)
Advances to the first beyond the current whose document number is greater than or equal to target....
Lucene::BucketScorer::~BucketScorer
virtual ~BucketScorer()
Lucene::BooleanScorer::coordFactors
Collection< double > coordFactors
Definition: BooleanScorer.h:42
Lucene::Collection< ScorerPtr >
Lucene::Bucket
Definition: BooleanScorer.h:111
Lucene::BucketScorer::nextDoc
virtual int32_t nextDoc()
Advances to the next document in the set and returns the doc it is currently on, or NO_MORE_DOCS if t...
Lucene::ScorerWeakPtr
boost::weak_ptr< Scorer > ScorerWeakPtr
Definition: LuceneTypes.h:429
Lucene::BucketWeakPtr
boost::weak_ptr< Bucket > BucketWeakPtr
Definition: LuceneTypes.h:284
Lucene::BooleanScorer::doc
int32_t doc
Definition: BooleanScorer.h:49
Lucene::BucketScorer::_score
double _score
Definition: BooleanScorer.h:101
Lucene::BooleanScorer::nextDoc
virtual int32_t nextDoc()
Advances to the next document in the set and returns the doc it is currently on, or NO_MORE_DOCS if t...
Lucene::BooleanScorer::current
BucketPtr current
Definition: BooleanScorer.h:48
Lucene::Bucket::~Bucket
virtual ~Bucket()
Lucene::BucketScorer::score
virtual double score()
Returns the score of the current document matching the query. Initially invalid, until {} or #advanc...
Lucene::Bucket::coord
int32_t coord
Definition: BooleanScorer.h:122
Lucene::BucketScorer::BucketScorer
BucketScorer()
Lucene::BooleanScorer
BooleanScorer uses a ~16k array to score windows of docs. So it scores docs 0-16k first,...
Definition: BooleanScorer.h:30
Lucene::BucketTable::SIZE
static const int32_t SIZE
Definition: BooleanScorer.h:132
Lucene::BucketPtr
boost::shared_ptr< Bucket > BucketPtr
Definition: LuceneTypes.h:284
Lucene::BooleanScorerCollector::~BooleanScorerCollector
virtual ~BooleanScorerCollector()
Lucene::SubScorer::required
bool required
Definition: BooleanScorer.h:155
Lucene::BucketTableWeakPtr
boost::weak_ptr< BucketTable > BucketTableWeakPtr
Definition: LuceneTypes.h:286
Lucene::BooleanScorerCollector::acceptsDocsOutOfOrder
virtual bool acceptsDocsOutOfOrder()
Return true if this collector does not require the matching docIDs to be delivered in int sort order ...
Lucene::BucketTable::size
int32_t size()
Lucene::BooleanScorer::score
virtual bool score(const CollectorPtr &collector, int32_t max, int32_t firstDocID)
Collects matching documents in a range. Hook for optimization. Note, firstDocID is added to ensure th...
Lucene
Definition: AbstractAllTermDocs.h:12
Lucene::BooleanScorer::score
virtual double score()
Returns the score of the current document matching the query. Initially invalid, until {} or #advanc...
Lucene::BooleanScorer::docID
virtual int32_t docID()
Returns the following:
Lucene::BooleanScorer::toString
virtual String toString()
Returns a string representation of the object.
Lucene::SubScorer::SubScorer
SubScorer(const ScorerPtr &scorer, bool required, bool prohibited, const CollectorPtr &collector, const SubScorerPtr &next)
Lucene::LuceneObject
Base class for all Lucene classes.
Definition: LuceneObject.h:31
Lucene::BucketScorer
Definition: BooleanScorer.h:87
Lucene::Bucket::Bucket
Bucket()
Lucene::SubScorer
Definition: BooleanScorer.h:146
Lucene::BucketTable::~BucketTable
virtual ~BucketTable()
Lucene::SubScorerPtr
boost::shared_ptr< SubScorer > SubScorerPtr
Definition: LuceneTypes.h:462
Lucene::IndexReaderPtr
boost::shared_ptr< IndexReader > IndexReaderPtr
Definition: LuceneTypes.h:157
Lucene::BooleanScorerCollector::collect
virtual void collect(int32_t doc)
Called once for every document matching a query, with the unbased document number.
Lucene::BucketTable::first
BucketPtr first
Definition: BooleanScorer.h:139
Lucene::BucketScorer::termFreq
float termFreq()
Definition: BooleanScorer.h:95
Lucene::BucketTable::newCollector
CollectorPtr newCollector(int32_t mask)
Lucene::Scorer
Common scoring functionality for different types of queries.
Definition: Scorer.h:33
Lucene::SubScorer::next
SubScorerPtr next
Definition: BooleanScorer.h:158
Lucene::CollectorPtr
boost::shared_ptr< Collector > CollectorPtr
Definition: LuceneTypes.h:295
Lucene::Bucket::doc
int32_t doc
Definition: BooleanScorer.h:116
Lucene::ScorerPtr
boost::shared_ptr< Scorer > ScorerPtr
Definition: LuceneTypes.h:429
Lucene::Bucket::bits
int32_t bits
Definition: BooleanScorer.h:121
Lucene::BooleanScorer::requiredMask
int32_t requiredMask
Definition: BooleanScorer.h:43
Lucene::BucketScorer::doc
int32_t doc
Definition: BooleanScorer.h:102
Lucene::BooleanScorer::score
virtual void score(const CollectorPtr &collector)
Scores and collects all matching documents.
Lucene::Bucket::_next
BucketWeakPtr _next
Definition: BooleanScorer.h:123
Lucene::BucketScorer::advance
virtual int32_t advance(int32_t target)
Advances to the first beyond the current whose document number is greater than or equal to target....
Collector.h
Lucene::BooleanScorer::bucketTable
BucketTablePtr bucketTable
Definition: BooleanScorer.h:40
Lucene::SubScorer::prohibited
bool prohibited
Definition: BooleanScorer.h:156
Lucene::BooleanScorerCollector::mask
int32_t mask
Definition: BooleanScorer.h:74
Lucene::SubScorer::collector
CollectorPtr collector
Definition: BooleanScorer.h:157
Lucene::BooleanScorerCollector::BooleanScorerCollector
BooleanScorerCollector(int32_t mask, const BucketTablePtr &bucketTable)
Lucene::BooleanScorer::BooleanScorer
BooleanScorer(const SimilarityPtr &similarity, int32_t minNrShouldMatch, Collection< ScorerPtr > optionalScorers, Collection< ScorerPtr > prohibitedScorers)
Lucene::BucketTable::MASK
static const int32_t MASK
Definition: BooleanScorer.h:136
Lucene::BooleanScorerCollector::setNextReader
virtual void setNextReader(const IndexReaderPtr &reader, int32_t docBase)
Called before collecting from each IndexReader. All doc ids in collect(int32_t) will correspond to re...
Lucene::BooleanScorer::nextMask
int32_t nextMask
Definition: BooleanScorer.h:45
Lucene::SimilarityPtr
boost::shared_ptr< Similarity > SimilarityPtr
Definition: LuceneTypes.h:435
Lucene::BooleanScorer::prohibitedMask
int32_t prohibitedMask
Definition: BooleanScorer.h:44
Lucene::BooleanScorerCollector
Definition: BooleanScorer.h:65
Lucene::BooleanScorer::minNrShouldMatch
int32_t minNrShouldMatch
Definition: BooleanScorer.h:46
Lucene::Bucket::score
double score
Definition: BooleanScorer.h:120
Lucene::BucketTable::buckets
Collection< BucketPtr > buckets
Definition: BooleanScorer.h:138
Lucene::BooleanScorer::maxCoord
int32_t maxCoord
Definition: BooleanScorer.h:41
Lucene::BucketTable::BucketTable
BucketTable()
Lucene::BucketTable
A simple hash table of document scores within a range.
Definition: BooleanScorer.h:127
Lucene::BooleanScorerCollector::_bucketTable
BucketTableWeakPtr _bucketTable
Definition: BooleanScorer.h:70
Lucene::BucketScorer::freq
int32_t freq
Definition: BooleanScorer.h:93
Lucene::BooleanScorerCollector::setScorer
virtual void setScorer(const ScorerPtr &scorer)
Called before successive calls to collect(int32_t). Implementations that need the score of the curren...
Lucene::BucketTablePtr
boost::shared_ptr< BucketTable > BucketTablePtr
Definition: LuceneTypes.h:286
Lucene::BooleanScorer::end
int32_t end
Definition: BooleanScorer.h:47
Lucene::BooleanScorerCollector::_scorer
ScorerWeakPtr _scorer
Definition: BooleanScorer.h:75
Lucene::Collector
Collectors are primarily meant to be used to gather raw results from a search, and implement sorting ...
Definition: Collector.h:100

clucene.sourceforge.net