diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2024-04-26 10:04:01 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2024-04-26 10:04:01 +0000 |
commit | cc217a6619d8f6285e7a453fa38bb1e46c9243c0 (patch) | |
tree | f471e2d8efbe8a1113db691af044fc61d71cc0fd /searchlib/src/tests/queryeval/weak_and/rise_wand.h | |
parent | 95cccd4698808d320f41461697f74a1c9d161bac (diff) |
Allow scorer for wand to carry state
Diffstat (limited to 'searchlib/src/tests/queryeval/weak_and/rise_wand.h')
-rw-r--r-- | searchlib/src/tests/queryeval/weak_and/rise_wand.h | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/searchlib/src/tests/queryeval/weak_and/rise_wand.h b/searchlib/src/tests/queryeval/weak_and/rise_wand.h index d4e66ec1907..057cfec1b5d 100644 --- a/searchlib/src/tests/queryeval/weak_and/rise_wand.h +++ b/searchlib/src/tests/queryeval/weak_and/rise_wand.h @@ -15,10 +15,14 @@ namespace rise { struct TermFreqScorer { - static int64_t calculateMaxScore(const wand::Term &term) { - return TermFrequencyScorer::calculateMaxScore(term); + TermFrequencyScorer _termFrequencyScorer; + TermFreqScorer() noexcept + : _termFrequencyScorer() + { } + int64_t calculateMaxScore(const wand::Term &term) { + return _termFrequencyScorer.calculateMaxScore(term); } - static int64_t calculateScore(const wand::Term &term, uint32_t docId) { + int64_t calculateScore(const wand::Term &term, uint32_t docId) { term.search->unpack(docId); return term.maxScore; } @@ -43,9 +47,13 @@ private: //const addr_t *const *_streamPayloads; public: - StreamComparator(const docid_t *streamDocIds); + explicit StreamComparator(const docid_t *streamDocIds) noexcept + : _streamDocIds(streamDocIds) + { } //const addr_t *const *streamPayloads); - inline bool operator()(const uint16_t a, const uint16_t b); + bool operator()(const uint16_t a, const uint16_t b) const noexcept { + return (_streamDocIds[a] < _streamDocIds[b]); + } }; // number of streams present in the query @@ -66,6 +74,7 @@ private: // comparator that compares two streams StreamComparator _streamComparator; + Scorer _scorer; //------------------------------------------------------------------------- // variables used for scoring and pruning @@ -119,7 +128,7 @@ private: public: RiseWand(const Terms &terms, uint32_t n); - ~RiseWand(); + ~RiseWand() override; void next(); void doSeek(uint32_t docid) override; void doUnpack(uint32_t docid) override; |