diff options
author | Håvard Pettersen <havardpe@oath.com> | 2017-09-01 14:09:20 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2017-09-01 14:27:48 +0000 |
commit | 4f6705537beea82533d19e35d032f24a89897b8a (patch) | |
tree | 5afd9ddcd14d295561b4ef8f055c3683b3686fed /searchlib | |
parent | abeb3febf928c011247dcd83d521d9ae00f68515 (diff) |
use 0.0 rank score for results when not ranking
Diffstat (limited to 'searchlib')
6 files changed, 13 insertions, 11 deletions
diff --git a/searchlib/src/vespa/searchlib/common/hitrank.h b/searchlib/src/vespa/searchlib/common/hitrank.h index 9f40cf9277c..824c01f9f9e 100644 --- a/searchlib/src/vespa/searchlib/common/hitrank.h +++ b/searchlib/src/vespa/searchlib/common/hitrank.h @@ -9,6 +9,7 @@ namespace search { typedef double HitRank; typedef double SignedHitRank; constexpr HitRank default_rank_value = -HUGE_VAL; +constexpr HitRank zero_rank_value = 0.0; } // namespace search diff --git a/searchlib/src/vespa/searchlib/common/rankedhit.h b/searchlib/src/vespa/searchlib/common/rankedhit.h index d56fa92442f..ed8860e0038 100644 --- a/searchlib/src/vespa/searchlib/common/rankedhit.h +++ b/searchlib/src/vespa/searchlib/common/rankedhit.h @@ -11,8 +11,8 @@ namespace search { struct RankedHit { - RankedHit() : _docId(0), _rankValue(default_rank_value) { } - RankedHit(unsigned int docId, HitRank rank = default_rank_value) : _docId(docId), _rankValue(rank) { } + RankedHit() : _docId(0), _rankValue(zero_rank_value) { } + RankedHit(unsigned int docId, HitRank rank = zero_rank_value) : _docId(docId), _rankValue(rank) { } unsigned int getDocId() const { return _docId & 0x7fffffff; } bool hasMore() const { return _docId & 0x80000000; } HitRank getRank() const { return _rankValue; } diff --git a/searchlib/src/vespa/searchlib/common/resultset.cpp b/searchlib/src/vespa/searchlib/common/resultset.cpp index 5ad89bf49d7..44e70886956 100644 --- a/searchlib/src/vespa/searchlib/common/resultset.cpp +++ b/searchlib/src/vespa/searchlib/common/resultset.cpp @@ -85,7 +85,7 @@ ResultSet::getNumHits() const void -ResultSet::mergeWithBitOverflow() +ResultSet::mergeWithBitOverflow(HitRank default_value) { if ( ! _bitOverflow) { return; @@ -111,7 +111,7 @@ ResultSet::mergeWithBitOverflow() // bitvector hits before array hits while (bidx < firstArrayHit) { tgtA->_docId = bidx; - tgtA->_rankValue = default_rank_value; + tgtA->_rankValue = default_value; tgtA++; bidx = bitVector->getNextTrueBit(bidx + 1); } @@ -123,7 +123,7 @@ ResultSet::mergeWithBitOverflow() tgtA->_rankValue = oldA->_rankValue; oldA++; } else { - tgtA->_rankValue = default_rank_value; + tgtA->_rankValue = default_value; } tgtA++; bidx = bitVector->getNextTrueBit(bidx + 1); @@ -134,7 +134,7 @@ ResultSet::mergeWithBitOverflow() // bitvector hits after array hits while (tgtA < tgtAEnd) { tgtA->_docId = bidx; - tgtA->_rankValue = default_rank_value; + tgtA->_rankValue = default_value; tgtA++; bidx = bitVector->getNextTrueBit(bidx + 1); } diff --git a/searchlib/src/vespa/searchlib/common/resultset.h b/searchlib/src/vespa/searchlib/common/resultset.h index e5ae98fe334..c647ed82238 100644 --- a/searchlib/src/vespa/searchlib/common/resultset.h +++ b/searchlib/src/vespa/searchlib/common/resultset.h @@ -38,7 +38,7 @@ public: const BitVector * getBitOverflow() const { return _bitOverflow.get(); } BitVector * getBitOverflow() { return _bitOverflow.get(); } unsigned int getNumHits() const; - void mergeWithBitOverflow(); + void mergeWithBitOverflow(HitRank default_value = default_rank_value); /* isEmpty() is allowed to return false even if bitmap has no hits */ bool isEmpty() const { return (_bitOverflow == NULL && _elemsUsedInRankedHitsArray == 0); } diff --git a/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp b/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp index 7d79d0f659e..f9196bdaef7 100644 --- a/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp @@ -252,7 +252,7 @@ mergeHitsIntoResultSet(const std::vector<HitCollector::Hit> &hits, ResultSet &re } std::unique_ptr<ResultSet> -HitCollector::getResultSet() +HitCollector::getResultSet(HitRank default_value) { Scores &initHeapScores = _ranges.first; Scores &finalHeapScores = _ranges.second; @@ -306,7 +306,7 @@ HitCollector::getResultSet() rh[j]._rankValue = getReScore(_hits[i].second); ++i; } else { - rh[j]._rankValue = default_rank_value; + rh[j]._rankValue = default_value; } } } else { @@ -317,7 +317,7 @@ HitCollector::getResultSet() rh[j]._rankValue = _hits[i].second; ++i; } else { - rh[j]._rankValue = default_rank_value; + rh[j]._rankValue = default_value; } } } diff --git a/searchlib/src/vespa/searchlib/queryeval/hitcollector.h b/searchlib/src/vespa/searchlib/queryeval/hitcollector.h index ed2372e3553..1bf2bc21e95 100644 --- a/searchlib/src/vespa/searchlib/queryeval/hitcollector.h +++ b/searchlib/src/vespa/searchlib/queryeval/hitcollector.h @@ -191,8 +191,9 @@ public: * ranked hits and the match data heap. * * @param auto pointer to the result set + * @param default_value rank value to be used for results without rank value **/ - std::unique_ptr<ResultSet> getResultSet(); + std::unique_ptr<ResultSet> getResultSet(HitRank default_value = default_rank_value); private: HitCollector(const HitCollector &); // Not implemented |