aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-07-05 01:37:52 +0200
committerGitHub <noreply@github.com>2023-07-05 01:37:52 +0200
commitf7e562f105a74b22ebf21f809ef568d4e12c97a3 (patch)
tree71dde190a792b420454771c964e2c5996a607a99
parentba7e9f22595053f893cff684ed8d83b7647f023e (diff)
parent607d5047f69a7e7c5700fc0352de6f811098b763 (diff)
Merge pull request #27636 from vespa-engine/revert-27635-balder/drop-check-for-valid-lid-temporarilyv8.190.2v8.189.22
Revert "Drop checking for valid lid temporarily"
-rw-r--r--searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp
index 38336009f14..b57346611f1 100644
--- a/searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp
+++ b/searchcore/src/vespa/searchcore/proton/matching/match_thread.cpp
@@ -68,22 +68,28 @@ fillPartialResult(ResultProcessor::Context & context, size_t totalHits, size_t n
PartialResult &pr = *context.result;
pr.totalHits(totalHits);
size_t maxHits = std::min(numHits, pr.maxSize());
- //TODO :const search::BitVector & validLids = context._validLids;
+ const search::BitVector & validLids = context._validLids;
if (pr.hasSortData()) {
FastS_SortSpec &spec = context.sort->sortSpec;
for (size_t i = 0; i < maxHits; ++i) {
- pr.add(hits[i], spec.getSortRef(i));
+ if (validLids.testBit(hits[i].getDocId())) {
+ pr.add(hits[i], spec.getSortRef(i));
+ }
}
} else {
for (size_t i = 0; i < maxHits; ++i) {
- pr.add(hits[i]);
+ if (validLids.testBit(hits[i].getDocId())) {
+ pr.add(hits[i]);
+ }
}
if ((bits != nullptr) && (pr.size() < pr.maxSize())) {
for (unsigned int bitId = bits->getFirstTrueBit();
(bitId < bits->size()) && (pr.size() < pr.maxSize());
bitId = bits->getNextTrueBit(bitId + 1))
{
- pr.add(search::RankedHit(bitId));
+ if (validLids.testBit(bitId)) {
+ pr.add(search::RankedHit(bitId));
+ }
}
}
}
@@ -368,6 +374,7 @@ MatchThread::processResult(const Doom & doom, search::ResultSet::UP result, Resu
result->mergeWithBitOverflow(fallback_rank_value());
}
if (doom.hard_doom()) return;
+ size_t totalHits = result->getNumHits(); // Must be done before modifying overflow
const search::RankedHit *hits = result->getArray();
size_t numHits = result->getArrayUsed();
search::BitVector *bits = result->getBitOverflow();
@@ -388,7 +395,7 @@ MatchThread::processResult(const Doom & doom, search::ResultSet::UP result, Resu
man.groupInRelevanceOrder(hits, numHits);
}
if (doom.hard_doom()) return;
- fillPartialResult(context, result->getNumHits(), numHits, hits, bits);
+ fillPartialResult(context, totalHits, numHits, hits, bits);
if (auto task = matchToolsFactory.createOnMatchTask()) {
task->run(result->copyResult());