summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-09-01 17:00:50 +0200
committerGitHub <noreply@github.com>2017-09-01 17:00:50 +0200
commit0d408cd082052f9629f52f8c058ea74323f21667 (patch)
treeeab6cb182b63094b81654df18f3f2570923c6e02 /searchlib
parent2a4de26353d1a35085b1e2df6674b59b6620b073 (diff)
parent4f6705537beea82533d19e35d032f24a89897b8a (diff)
Merge pull request #3309 from vespa-engine/havardpe/use-zero-rank-score-for-unranked-results
use 0.0 rank score for results when not ranking
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/common/hitrank.h1
-rw-r--r--searchlib/src/vespa/searchlib/common/rankedhit.h4
-rw-r--r--searchlib/src/vespa/searchlib/common/resultset.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/common/resultset.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/hitcollector.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/hitcollector.h3
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