summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-07-27 01:09:36 +0200
committerHenning Baldersheim <balder@oath.com>2018-07-27 01:09:36 +0200
commit70e0741c327bfa397d450c36a891e2d99fe57a75 (patch)
tree3dffa01fdf706407c71feb03df5be4a812e9e103 /searchlib
parent10d7cd86098937b8b559099e34dea365be70dea9 (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')
-rw-r--r--searchlib/src/tests/hitcollector/hitcollector_test.cpp12
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp15
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/hitcollector.h3
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();
/**