diff options
author | Tor Egge <Tor.Egge@online.no> | 2024-01-25 11:39:36 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2024-01-25 11:39:36 +0100 |
commit | d198b7b73e376bcb349b159a77e57dbb2a54f19e (patch) | |
tree | 7ba1e5430f562e1515856a6e6c82daeba905443d /searchlib | |
parent | 45900206e7b773c804e803497dd5a7058f33f9c4 (diff) |
Track element length in streaming mode.
Diffstat (limited to 'searchlib')
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; } |