The Scorer for DisjunctionMaxQuery. The union of all documents generated by the the subquery scorers is generated in document number order. The score for each document is the maximum of the scores computed by the subquery scorers that generate that document, plus tieBreakerMultiplier times the sum of the scores for the other subqueries that generate the document.
More...
#include <DisjunctionMaxScorer.h>
|
void | scoreAll (int32_t root, int32_t size, int32_t doc, Collection< double > sum, Collection< double > max) |
| Recursively iterate all subScorers that generated last doc computing sum and max.
|
|
void | heapify () |
| Organize subScorers into a min heap with scorers generating the earliest document on top.
|
|
void | heapAdjust (int32_t root) |
| The subtree of subScorers at root is a min heap except possibly for its root element. Bubble the root down as required to make the subtree a heap.
|
|
void | heapRemoveRoot () |
| Remove the root Scorer from subScorers and re-establish it as a heap.
|
|
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 that nextDoc() was called before this method.
|
|
| LuceneObject () |
|
The Scorer for DisjunctionMaxQuery. The union of all documents generated by the the subquery scorers is generated in document number order. The score for each document is the maximum of the scores computed by the subquery scorers that generate that document, plus tieBreakerMultiplier times the sum of the scores for the other subqueries that generate the document.
◆ DisjunctionMaxScorer()
Lucene::DisjunctionMaxScorer::DisjunctionMaxScorer |
( |
double |
tieBreakerMultiplier, |
|
|
const SimilarityPtr & |
similarity, |
|
|
Collection< ScorerPtr > |
subScorers, |
|
|
int32_t |
numScorers |
|
) |
| |
◆ ~DisjunctionMaxScorer()
virtual Lucene::DisjunctionMaxScorer::~DisjunctionMaxScorer |
( |
| ) |
|
|
virtual |
◆ _getClassName()
static String Lucene::DisjunctionMaxScorer::_getClassName |
( |
| ) |
|
|
inlinestatic |
◆ advance()
virtual int32_t Lucene::DisjunctionMaxScorer::advance |
( |
int32_t |
target | ) |
|
|
virtual |
Advances to the first beyond the current whose document number is greater than or equal to target. Returns the current document number or NO_MORE_DOCS
if there are no more docs in the set.
Behaves as if written:
int32_t advance(int32_t target)
{
int32_t doc;
while ((doc = nextDoc()) < target)
{ }
return doc;
}
Some implementations are considerably more efficient than that.
NOTE: certain implementations may return a different value (each time) if called several times in a row with the same target.
NOTE: this method may be called with {@value NO_MORE_DOCS} for efficiency by some Scorers. If your implementation cannot efficiently determine that it should exhaust, it is recommended that you check for that value in each call to this method.
NOTE: after the iterator has exhausted you should not call this method, as it may result in unpredicted behaviour.
Implements Lucene::DocIdSetIterator.
◆ docID()
virtual int32_t Lucene::DisjunctionMaxScorer::docID |
( |
| ) |
|
|
virtual |
◆ getClassName()
virtual String Lucene::DisjunctionMaxScorer::getClassName |
( |
| ) |
|
|
inlinevirtual |
◆ heapAdjust()
void Lucene::DisjunctionMaxScorer::heapAdjust |
( |
int32_t |
root | ) |
|
|
protected |
The subtree of subScorers at root is a min heap except possibly for its root element. Bubble the root down as required to make the subtree a heap.
◆ heapify()
void Lucene::DisjunctionMaxScorer::heapify |
( |
| ) |
|
|
protected |
Organize subScorers into a min heap with scorers generating the earliest document on top.
◆ heapRemoveRoot()
void Lucene::DisjunctionMaxScorer::heapRemoveRoot |
( |
| ) |
|
|
protected |
Remove the root Scorer from subScorers and re-establish it as a heap.
◆ nextDoc()
virtual int32_t Lucene::DisjunctionMaxScorer::nextDoc |
( |
| ) |
|
|
virtual |
Advances to the next document in the set and returns the doc it is currently on, or NO_MORE_DOCS
if there are no more docs in the set.
NOTE: after the iterator has exhausted you should not call this method, as it may result in unpredicted behaviour.
Implements Lucene::DocIdSetIterator.
◆ score()
virtual double Lucene::DisjunctionMaxScorer::score |
( |
| ) |
|
|
virtual |
Determine the current document score. Initially invalid, until next()
is called the first time.
- Returns
- the score of the current generated document
Implements Lucene::Scorer.
◆ scoreAll()
void Lucene::DisjunctionMaxScorer::scoreAll |
( |
int32_t |
root, |
|
|
int32_t |
size, |
|
|
int32_t |
doc, |
|
|
Collection< double > |
sum, |
|
|
Collection< double > |
max |
|
) |
| |
|
protected |
Recursively iterate all subScorers that generated last doc computing sum and max.
◆ shared_from_this()
◆ doc
int32_t Lucene::DisjunctionMaxScorer::doc |
|
protected |
◆ numScorers
int32_t Lucene::DisjunctionMaxScorer::numScorers |
|
protected |
◆ subScorers
The scorers for subqueries that have remaining docs, kept as a min heap by number of next doc.
◆ tieBreakerMultiplier
double Lucene::DisjunctionMaxScorer::tieBreakerMultiplier |
|
protected |
Multiplier applied to non-maximum-scoring subqueries for a document as they are summed into the result.
The documentation for this class was generated from the following file: