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


Loading...
Searching...
No Matches
BooleanScorer.h
Go to the documentation of this file.
1
2// 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
13namespace Lucene {
14
30class LPPAPI BooleanScorer : public Scorer {
31public:
32 BooleanScorer(const SimilarityPtr& similarity, int32_t minNrShouldMatch, Collection<ScorerPtr> optionalScorers, Collection<ScorerPtr> prohibitedScorers);
33 virtual ~BooleanScorer();
34
36
37
38protected:
41 int32_t maxCoord;
43 int32_t requiredMask;
45 int32_t nextMask;
47 int32_t end;
49 int32_t doc;
50
51protected:
52 // firstDocID is ignored since nextDoc() initializes 'current'
53 virtual bool score(const CollectorPtr& collector, int32_t max, int32_t firstDocID);
54
55public:
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
66public:
67 BooleanScorerCollector(int32_t mask, const BucketTablePtr& bucketTable);
69
71
72protected:
74 int32_t mask;
76
77public:
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().
87class BucketScorer : public Scorer {
88public:
90 virtual ~BucketScorer();
91
92
93 int32_t freq;
95 float termFreq(){
96 return freq;
97 }
98
99
100public:
101 double _score;
102 int32_t doc;
103
104public:
105 virtual int32_t advance(int32_t target);
106 virtual int32_t docID();
107 virtual int32_t nextDoc();
108 virtual double score();
109};
110
111class Bucket : public LuceneObject {
112public:
114 virtual ~Bucket();
115
117
118public:
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
127class BucketTable : public LuceneObject {
128public:
130 virtual ~BucketTable();
131
133
134public:
135 static const int32_t SIZE;
136 static const int32_t MASK;
137
139 BucketPtr first; // head of valid list
140
141public:
143 int32_t size();
144};
145
160
161}
162
163#endif
#define LUCENE_CLASS(Name)
Definition LuceneObject.h:24
Definition BooleanScorer.h:65
virtual void collect(int32_t doc)
Called once for every document matching a query, with the unbased document number.
int32_t mask
Definition BooleanScorer.h:74
virtual void setScorer(const ScorerPtr &scorer)
Called before successive calls to collect(int32_t). Implementations that need the score of the curren...
BooleanScorerCollector(int32_t mask, const BucketTablePtr &bucketTable)
virtual bool acceptsDocsOutOfOrder()
Return true if this collector does not require the matching docIDs to be delivered in int sort order ...
ScorerWeakPtr _scorer
Definition BooleanScorer.h:75
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...
BucketTableWeakPtr _bucketTable
Definition BooleanScorer.h:73
BooleanScorer uses a ~16k array to score windows of docs. So it scores docs 0-16k first,...
Definition BooleanScorer.h:30
Collection< double > coordFactors
Definition BooleanScorer.h:42
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...
SubScorerPtr scorers
Definition BooleanScorer.h:39
int32_t maxCoord
Definition BooleanScorer.h:41
virtual double score()
Returns the score of the current document matching the query. Initially invalid, until nextDoc() or a...
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...
BucketTablePtr bucketTable
Definition BooleanScorer.h:40
int32_t minNrShouldMatch
Definition BooleanScorer.h:46
virtual int32_t advance(int32_t target)
Advances to the first beyond the current whose document number is greater than or equal to target....
BooleanScorer(const SimilarityPtr &similarity, int32_t minNrShouldMatch, Collection< ScorerPtr > optionalScorers, Collection< ScorerPtr > prohibitedScorers)
int32_t requiredMask
Definition BooleanScorer.h:43
int32_t doc
Definition BooleanScorer.h:49
int32_t nextMask
Definition BooleanScorer.h:45
virtual String toString()
Returns a string representation of the object.
int32_t end
Definition BooleanScorer.h:47
BucketPtr current
Definition BooleanScorer.h:48
virtual void score(const CollectorPtr &collector)
Scores and collects all matching documents.
int32_t prohibitedMask
Definition BooleanScorer.h:44
virtual int32_t docID()
Returns the following:
Definition BooleanScorer.h:87
virtual int32_t docID()
Returns the following:
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...
float termFreq()
Definition BooleanScorer.h:95
virtual double score()
Returns the score of the current document matching the query. Initially invalid, until nextDoc() or a...
int32_t freq
Definition BooleanScorer.h:93
double _score
Definition BooleanScorer.h:101
virtual int32_t advance(int32_t target)
Advances to the first beyond the current whose document number is greater than or equal to target....
int32_t doc
Definition BooleanScorer.h:102
A simple hash table of document scores within a range.
Definition BooleanScorer.h:127
Collection< BucketPtr > buckets
Definition BooleanScorer.h:138
BucketPtr first
Definition BooleanScorer.h:139
static const int32_t SIZE
Definition BooleanScorer.h:135
virtual ~BucketTable()
CollectorPtr newCollector(int32_t mask)
static const int32_t MASK
Definition BooleanScorer.h:136
Definition BooleanScorer.h:111
virtual ~Bucket()
double score
Definition BooleanScorer.h:120
int32_t bits
Definition BooleanScorer.h:121
BucketWeakPtr _next
Definition BooleanScorer.h:123
int32_t doc
Definition BooleanScorer.h:119
int32_t coord
Definition BooleanScorer.h:122
Utility template class to handle collections that can be safely copied and shared.
Definition Collection.h:17
Collectors are primarily meant to be used to gather raw results from a search, and implement sorting ...
Definition Collector.h:100
Base class for all Lucene classes.
Definition LuceneObject.h:31
Common scoring functionality for different types of queries.
Definition Scorer.h:33
Definition BooleanScorer.h:146
virtual ~SubScorer()
CollectorPtr collector
Definition BooleanScorer.h:157
bool required
Definition BooleanScorer.h:155
SubScorer(const ScorerPtr &scorer, bool required, bool prohibited, const CollectorPtr &collector, const SubScorerPtr &next)
SubScorerPtr next
Definition BooleanScorer.h:158
ScorerPtr scorer
Definition BooleanScorer.h:154
bool prohibited
Definition BooleanScorer.h:156
Definition AbstractAllTermDocs.h:12
boost::shared_ptr< Similarity > SimilarityPtr
Definition LuceneTypes.h:435
boost::weak_ptr< Bucket > BucketWeakPtr
Definition LuceneTypes.h:284
boost::shared_ptr< Collector > CollectorPtr
Definition LuceneTypes.h:295
boost::weak_ptr< Scorer > ScorerWeakPtr
Definition LuceneTypes.h:429
boost::shared_ptr< IndexReader > IndexReaderPtr
Definition LuceneTypes.h:157
boost::shared_ptr< Scorer > ScorerPtr
Definition LuceneTypes.h:429
boost::shared_ptr< SubScorer > SubScorerPtr
Definition LuceneTypes.h:462
boost::weak_ptr< BucketTable > BucketTableWeakPtr
Definition LuceneTypes.h:286
boost::shared_ptr< BucketTable > BucketTablePtr
Definition LuceneTypes.h:286
boost::shared_ptr< Bucket > BucketPtr
Definition LuceneTypes.h:284

clucene.sourceforge.net