diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-05-16 14:53:57 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-05-16 14:53:57 +0000 |
commit | c348f78ebc0bb09d5977858c7492ff04202d59b4 (patch) | |
tree | 2c33bfa1641870ca9deeb4a6ff0676f7df9b146d /searchlib | |
parent | a47d233c729e7182d7ea77b707fcef12512f42bf (diff) |
Add reserve to dot product blueprints
Diffstat (limited to 'searchlib')
6 files changed, 27 insertions, 4 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp index 61b717b1104..de5bdc33e3c 100644 --- a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp @@ -25,6 +25,13 @@ DotProductBlueprint::getNextChildField(const FieldSpec &outer) } void +DotProductBlueprint::reserve(size_t num_children) { + _weights.reserve(num_children); + _terms.reserve(num_children); + _layout.reserve(num_children); +} + +void DotProductBlueprint::addTerm(Blueprint::UP term, int32_t weight) { HitEstimate childEst = term->getState().estimate(); @@ -41,8 +48,7 @@ DotProductBlueprint::addTerm(Blueprint::UP term, int32_t weight) } SearchIterator::UP -DotProductBlueprint::createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, - bool) const +DotProductBlueprint::createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, bool) const { assert(tfmda.size() == 1); assert(getState().numFields() == 1); diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h index 4ba59ba755f..2975958b5af 100644 --- a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h @@ -26,6 +26,7 @@ public: FieldSpec getNextChildField(const FieldSpec &outer); // used by create visitor + void reserve(size_t num_children); void addTerm(Blueprint::UP term, int32_t weight); SearchIteratorUP createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, bool strict) const override; diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp index fe212666ec9..b4b55098eaa 100644 --- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp @@ -56,6 +56,12 @@ ParallelWeakAndBlueprint::getNextChildField(const FieldSpec &outer) } void +ParallelWeakAndBlueprint::reserve(size_t num_children) { + _weights.reserve(num_children); + _terms.reserve(num_children); +} + +void ParallelWeakAndBlueprint::addTerm(Blueprint::UP term, int32_t weight) { HitEstimate childEst = term->getState().estimate(); @@ -78,6 +84,7 @@ ParallelWeakAndBlueprint::createLeafSearch(const search::fef::TermFieldMatchData assert(tfmda.size() == 1); fef::MatchData::UP childrenMatchData = _layout.createMatchData(); wand::Terms terms; + terms.reserve(_terms.size()); for (size_t i = 0; i < _terms.size(); ++i) { const State &childState = _terms[i]->getState(); assert(childState.numFields() == 1); diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h index 1a481be5c32..a2c13f12485 100644 --- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h @@ -44,7 +44,7 @@ public: score_t scoreThreshold, double thresholdBoostFactor, uint32_t scoresAdjustFrequency); - virtual ~ParallelWeakAndBlueprint() override; + ~ParallelWeakAndBlueprint() override; const WeakAndHeap &getScores() const { return _scores; } @@ -56,6 +56,7 @@ public: FieldSpec getNextChildField(const FieldSpec &outer); // Used by create visitor + void reserve(size_t num_children); void addTerm(Blueprint::UP term, int32_t weight); SearchIterator::UP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const override; diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.cpp index f855b72812a..ee55a89dcdc 100644 --- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.cpp @@ -74,6 +74,13 @@ WeightedSetTermBlueprint::WeightedSetTermBlueprint(const FieldSpec &field) WeightedSetTermBlueprint::~WeightedSetTermBlueprint() = default; void +WeightedSetTermBlueprint::reserve(size_t num_children) { + _weights.reserve(num_children); + _terms.reserve(num_children); + _layout.reserve(num_children); +} + +void WeightedSetTermBlueprint::addTerm(Blueprint::UP term, int32_t weight) { HitEstimate childEst = term->getState().estimate(); @@ -100,7 +107,7 @@ WeightedSetTermBlueprint::createLeafSearch(const fef::TermFieldMatchDataArray &t // TODO: pass ownership with unique_ptr children[i] = _terms[i]->createSearch(*md, true).release(); } - return SearchIterator::UP(WeightedSetTermSearch::create(children, *tfmda[0], _children_field.isFilter(), _weights, std::move(md))); + return WeightedSetTermSearch::create(children, *tfmda[0], _children_field.isFilter(), _weights, std::move(md)); } SearchIterator::UP diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h index 2a3db3ec52d..3827dc8a35f 100644 --- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_blueprint.h @@ -30,6 +30,7 @@ public: FieldSpec getNextChildField(const FieldSpec &) { return _children_field; } // used by create visitor + void reserve(size_t num_children); void addTerm(Blueprint::UP term, int32_t weight); SearchIteratorUP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const override; |