summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2024-01-25 11:39:36 +0100
committerTor Egge <Tor.Egge@online.no>2024-01-25 11:39:36 +0100
commitd198b7b73e376bcb349b159a77e57dbb2a54f19e (patch)
tree7ba1e5430f562e1515856a6e6c82daeba905443d /searchlib
parent45900206e7b773c804e803497dd5a7058f33f9c4 (diff)
Track element length in streaming mode.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/hit.h4
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp11
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/queryterm.h3
3 files changed, 16 insertions, 2 deletions
diff --git a/searchlib/src/vespa/searchlib/query/streaming/hit.h b/searchlib/src/vespa/searchlib/query/streaming/hit.h
index cd72555ea66..168c09a91ec 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/hit.h
+++ b/searchlib/src/vespa/searchlib/query/streaming/hit.h
@@ -11,18 +11,22 @@ class Hit
uint32_t _field_id;
uint32_t _element_id;
int32_t _element_weight;
+ uint32_t _element_length;
uint32_t _position;
public:
Hit(uint32_t field_id_, uint32_t element_id_, int32_t element_weight_, uint32_t position_) noexcept
: _field_id(field_id_),
_element_id(element_id_),
_element_weight(element_weight_),
+ _element_length(0),
_position(position_)
{ }
uint32_t field_id() const noexcept { return _field_id; }
uint32_t element_id() const { return _element_id; }
int32_t element_weight() const { return _element_weight; }
+ uint32_t element_length() const { return _element_length; }
uint32_t position() const { return _position; }
+ void set_element_length(uint32_t value) { _element_length = value; }
};
using HitList = std::vector<Hit>;
diff --git a/searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp b/searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp
index e0b78633af3..b7e619cfe4c 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp
+++ b/searchlib/src/vespa/searchlib/query/streaming/queryterm.cpp
@@ -162,9 +162,18 @@ void QueryTerm::resizeFieldId(size_t fieldNo)
}
}
-void QueryTerm::add(uint32_t field_id, uint32_t element_id, int32_t element_weight, uint32_t position)
+uint32_t
+QueryTerm::add(uint32_t field_id, uint32_t element_id, int32_t element_weight, uint32_t position)
{
+ uint32_t idx = _hitList.size();
_hitList.emplace_back(field_id, element_id, element_weight, position);
+ return idx;
+}
+
+void
+QueryTerm::set_element_length(uint32_t hitlist_idx, uint32_t element_length)
+{
+ _hitList[hitlist_idx].set_element_length(element_length);
}
NearestNeighborQueryNode*
diff --git a/searchlib/src/vespa/searchlib/query/streaming/queryterm.h b/searchlib/src/vespa/searchlib/query/streaming/queryterm.h
index 627fae0532d..504b94de747 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/queryterm.h
+++ b/searchlib/src/vespa/searchlib/query/streaming/queryterm.h
@@ -74,7 +74,8 @@ public:
/// Gives you all phrases of this tree. Indicating that they are all const.
void getPhrases(ConstQueryNodeRefList & tl) const override;
- void add(uint32_t field_id, uint32_t element_id, int32_t element_weight, uint32_t position);
+ uint32_t add(uint32_t field_id, uint32_t element_id, int32_t element_weight, uint32_t position);
+ void set_element_length(uint32_t hitlist_idx, uint32_t element_length);
EncodingBitMap encoding() const { return _encoding; }
size_t termLen() const { return getTermLen(); }
const string & index() const { return _index; }