summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2023-11-21 16:16:03 +0000
committerGeir Storli <geirst@yahooinc.com>2023-11-21 16:29:49 +0000
commit6483ab09d6b0878904ef9269ca959a7d07d29af9 (patch)
tree6ec02ab1e56f70e53a79c1a39ae80ce14d90e316 /searchlib
parent52c20a1e1bd9e9dbe989c6ae05fb25a68120cc7d (diff)
Adhere to the reference type used by the iterator pack.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp3
-rw-r--r--searchlib/src/vespa/searchlib/attribute/iterator_pack.h11
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp3
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterator_pack.h11
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp2
5 files changed, 17 insertions, 13 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp b/searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp
index 44413b42921..3dda6017e0a 100644
--- a/searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/iterator_pack.cpp
@@ -2,6 +2,7 @@
#include "iterator_pack.h"
#include <vespa/searchlib/common/bitvector.h>
+#include <limits>
namespace search {
@@ -10,7 +11,7 @@ AttributeIteratorPack::~AttributeIteratorPack() = default;
AttributeIteratorPack::AttributeIteratorPack(std::vector<DocumentWeightIterator> &&children)
: _children(std::move(children))
{
- assert(_children.size() < 0x10000);
+ assert(_children.size() <= std::numeric_limits<ref_t>::max());
}
std::unique_ptr<BitVector>
diff --git a/searchlib/src/vespa/searchlib/attribute/iterator_pack.h b/searchlib/src/vespa/searchlib/attribute/iterator_pack.h
index 388dce3aeb7..04df7c9b772 100644
--- a/searchlib/src/vespa/searchlib/attribute/iterator_pack.h
+++ b/searchlib/src/vespa/searchlib/attribute/iterator_pack.h
@@ -15,6 +15,7 @@ private:
std::vector<DocumentWeightIterator> _children;
public:
+ using ref_t = uint16_t;
AttributeIteratorPack() noexcept : _children() {}
AttributeIteratorPack(AttributeIteratorPack &&rhs) noexcept = default;
AttributeIteratorPack &operator=(AttributeIteratorPack &&rhs) noexcept = default;
@@ -22,11 +23,11 @@ public:
explicit AttributeIteratorPack(std::vector<DocumentWeightIterator> &&children);
~AttributeIteratorPack();
- uint32_t get_docid(uint16_t ref) const {
+ uint32_t get_docid(ref_t ref) const {
return _children[ref].valid() ? _children[ref].getKey() : endDocId;
}
- uint32_t seek(uint16_t ref, uint32_t docid) {
+ uint32_t seek(ref_t ref, uint32_t docid) {
_children[ref].linearSeek(docid);
if (__builtin_expect(_children[ref].valid(), true)) {
return _children[ref].getKey();
@@ -34,14 +35,14 @@ public:
return endDocId;
}
- int32_t get_weight(uint16_t ref, uint32_t) {
+ int32_t get_weight(ref_t ref, uint32_t) {
return _children[ref].getData();
}
std::unique_ptr<BitVector> get_hits(uint32_t begin_id, uint32_t end_id);
void or_hits_into(BitVector &result, uint32_t begin_id);
- uint16_t size() const noexcept { return _children.size(); }
+ ref_t size() const noexcept { return _children.size(); }
void initRange(uint32_t begin, uint32_t end) {
(void) end;
for (auto &child: _children) {
@@ -49,7 +50,7 @@ public:
}
}
private:
- uint32_t next(uint16_t ref) {
+ uint32_t next(ref_t ref) {
++_children[ref];
return get_docid(ref);
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp
index 8c56a6694dc..fdea54424de 100644
--- a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.cpp
@@ -4,6 +4,7 @@
#include "termwise_helper.h"
#include <vespa/searchlib/fef/matchdata.h>
#include <cassert>
+#include <limits>
namespace search::queryeval {
@@ -28,7 +29,7 @@ SearchIteratorPack::SearchIteratorPack(const std::vector<SearchIterator*> &child
_children.emplace_back(child);
}
assert((_children.size() == _childMatch.size()) || _childMatch.empty());
- assert(_children.size() < 0x10000);
+ assert(_children.size() <= std::numeric_limits<ref_t>::max());
}
SearchIteratorPack::SearchIteratorPack(const std::vector<SearchIterator*> &children, MatchDataUP md)
diff --git a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h
index ce0c47f0882..0a1b140f28a 100644
--- a/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h
+++ b/searchlib/src/vespa/searchlib/queryeval/iterator_pack.h
@@ -18,6 +18,7 @@ private:
MatchDataUP _md;
public:
+ using ref_t = uint16_t;
SearchIteratorPack();
~SearchIteratorPack();
SearchIteratorPack(SearchIteratorPack &&rhs) noexcept;
@@ -31,25 +32,25 @@ public:
// TODO: use MultiSearch::Children to pass ownership
SearchIteratorPack(const std::vector<SearchIterator*> &children, MatchDataUP md);
- uint32_t get_docid(uint16_t ref) const {
+ uint32_t get_docid(ref_t ref) const {
return _children[ref]->getDocId();
}
- uint32_t seek(uint16_t ref, uint32_t docid) {
+ uint32_t seek(ref_t ref, uint32_t docid) {
_children[ref]->seek(docid);
return _children[ref]->getDocId();
}
- int32_t get_weight(uint16_t ref, uint32_t docid) {
+ int32_t get_weight(ref_t ref, uint32_t docid) {
_children[ref]->doUnpack(docid);
return _childMatch[ref]->getWeight();
}
- void unpack(uint16_t ref, uint32_t docid) {
+ void unpack(ref_t ref, uint32_t docid) {
_children[ref]->doUnpack(docid);
}
- uint16_t size() const { return _children.size(); }
+ ref_t size() const { return _children.size(); }
void initRange(uint32_t begin, uint32_t end) {
for (auto & child: _children) {
child->initRange(begin, end);
diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
index cc37433a696..32ae321e031 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
@@ -18,7 +18,7 @@ template <typename HEAP, typename IteratorPack>
class WeightedSetTermSearchImpl : public WeightedSetTermSearch
{
private:
- using ref_t = uint32_t;
+ using ref_t = IteratorPack::ref_t;
struct CmpDocId {
const uint32_t *termPos;