diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-07-05 01:37:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-05 01:37:52 +0200 |
commit | f7e562f105a74b22ebf21f809ef568d4e12c97a3 (patch) | |
tree | 71dde190a792b420454771c964e2c5996a607a99 | |
parent | ba7e9f22595053f893cff684ed8d83b7647f023e (diff) | |
parent | 607d5047f69a7e7c5700fc0352de6f811098b763 (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.cpp | 17 |
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()); |