diff options
author | Henning Baldersheim <balder@oath.com> | 2018-07-27 01:09:36 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-07-27 01:09:36 +0200 |
commit | 70e0741c327bfa397d450c36a891e2d99fe57a75 (patch) | |
tree | 3dffa01fdf706407c71feb03df5be4a812e9e103 /searchlib | |
parent | 10d7cd86098937b8b559099e34dea365be70dea9 (diff) |
Select the hits to rerank in the selectBest part instead of a later copy.
Stick to full hits instead of feature_t.
Diffstat (limited to 'searchlib')
3 files changed, 3 insertions, 27 deletions
diff --git a/searchlib/src/tests/hitcollector/hitcollector_test.cpp b/searchlib/src/tests/hitcollector/hitcollector_test.cpp index f025c09b6b9..ec5d94c52cb 100644 --- a/searchlib/src/tests/hitcollector/hitcollector_test.cpp +++ b/searchlib/src/tests/hitcollector/hitcollector_test.cpp @@ -231,18 +231,6 @@ TEST_F("testReRank - partial", AscendingScoreFixture) TEST_DO(checkResult(*rs, f.expBv.get())); } -TEST_F("require that scores for 2nd phase candidates can be retrieved", DescendingScoreFixture) -{ - f.addHits(); - std::vector<feature_t> scores = f.hc.getSortedHeapScores(); - ASSERT_EQUAL(5u, scores.size()); - EXPECT_EQUAL(100, scores[0]); - EXPECT_EQUAL(99, scores[1]); - EXPECT_EQUAL(98, scores[2]); - EXPECT_EQUAL(97, scores[3]); - EXPECT_EQUAL(96, scores[4]); -} - TEST_F("require that hits for 2nd phase candidates can be retrieved", DescendingScoreFixture) { f.addHits(); diff --git a/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp b/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp index e0385af99bc..5419d44f939 100644 --- a/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp @@ -168,19 +168,6 @@ HitCollector::DocIdCollector<CollectRankedHit>::collectAndChangeCollector(uint32 hc._collector = std::make_unique<BitVectorCollector<CollectRankedHit>>(hc); // note - self-destruct. } -std::vector<feature_t> -HitCollector::getSortedHeapScores() -{ - std::vector<feature_t> scores; - size_t scoresToReturn = std::min(_hits.size(), static_cast<size_t>(_maxReRankHitsSize)); - scores.reserve(scoresToReturn); - sortHitsByScore(scoresToReturn); - for (size_t i = 0; i < scoresToReturn; ++i) { - scores.push_back(_hits[_scoreOrder[i]].second); - } - return scores; -} - std::vector<HitCollector::Hit> HitCollector::getSortedHeapHits() { @@ -219,6 +206,8 @@ HitCollector::reRank(DocumentScorer &scorer, size_t count) size_t HitCollector::reRank(DocumentScorer &scorer, std::vector<Hit> hits) { + if (hits.empty()) { return 0; } + size_t hitsToReRank = hits.size(); Scores &initScores = _ranges.first; Scores &finalScores = _ranges.second; diff --git a/searchlib/src/vespa/searchlib/queryeval/hitcollector.h b/searchlib/src/vespa/searchlib/queryeval/hitcollector.h index bbd1e08c65a..e14c07cb3f1 100644 --- a/searchlib/src/vespa/searchlib/queryeval/hitcollector.h +++ b/searchlib/src/vespa/searchlib/queryeval/hitcollector.h @@ -167,10 +167,9 @@ public: } /** - * Returns a sorted vector of scores for the hits that are stored + * Returns a sorted vector of hits for the hits that are stored * in the heap. These are the candidates for re-ranking. */ - std::vector<feature_t> getSortedHeapScores(); std::vector<Hit> getSortedHeapHits(); /** |