aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-09-28 21:22:22 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-09-29 07:08:39 +0000
commitaaae082e431287cf856f8f3627a3b17e4b4245a6 (patch)
tree69e11ab3bbea495bab43b0fb5b08f6dffdce8427 /searchlib/src
parent6ea63dc9d860dc06afa1f25f1240ded09a71c322 (diff)
- Resolve (!field_is_filter && !_tmd.isNotNeeded()) once upfront.
- Lift out single items if filter or match data not needed.
Diffstat (limited to 'searchlib/src')
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp10
1 files changed, 5 insertions, 5 deletions
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 27cfff1cf24..9568c02cf32 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
@@ -46,7 +46,7 @@ private:
ref_t *_data_stash;
ref_t *_data_end;
IteratorPack _children;
- bool _field_is_filter;
+ bool _need_match_data;
void seek_child(ref_t child, uint32_t docId) {
_termPos[child] = _children.seek(child, docId);
@@ -76,7 +76,7 @@ public:
_data_stash(nullptr),
_data_end(nullptr),
_children(std::move(iteratorPack)),
- _field_is_filter(field_is_filter)
+ _need_match_data(!field_is_filter && !_tmd.isNotNeeded())
{
HEAP::require_left_heap();
assert(_children.size() > 0);
@@ -87,7 +87,7 @@ public:
}
_data_begin = &_data_space[0];
_data_end = _data_begin + _data_space.size();
- if (!_field_is_filter && !_tmd.isNotNeeded()) {
+ if (_need_match_data) {
_tmd.reservePositions(_children.size());
}
}
@@ -113,7 +113,7 @@ public:
}
void doUnpack(uint32_t docId) override {
- if (!_field_is_filter && !_tmd.isNotNeeded()) {
+ if (_need_match_data) {
_tmd.reset(docId);
pop_matching_children(docId);
std::sort(_data_stash, _data_end, _cmpWeight);
@@ -172,7 +172,7 @@ WeightedSetTermSearch::create(const std::vector<SearchIterator *> &children,
using ArrayHeapImpl = WeightedSetTermSearchImpl<vespalib::LeftArrayHeap, SearchIteratorPack>;
using HeapImpl = WeightedSetTermSearchImpl<vespalib::LeftHeap, SearchIteratorPack>;
- if (field_is_filter && tmd.isNotNeeded()) {
+ if (tmd.isNotNeeded()) {
return attribute::DocumentWeightOrFilterSearch::create(children, std::move(match_data));
}