diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-07-20 12:21:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-20 12:21:58 +0200 |
commit | 67893969909e31df00b319460102ffed503c7d7b (patch) | |
tree | bcc1574baa312379d15bb00233a8e21cef28fbe8 /searchlib | |
parent | c0295935ea3e251982dee93e0dd39e0f0d2ad030 (diff) | |
parent | 4becd1651e549393dd555095d99abe6f4452afd1 (diff) |
Merge pull request #6439 from vespa-engine/balder/lift-rankitem
Balder/lift rankitem
Diffstat (limited to 'searchlib')
4 files changed, 47 insertions, 65 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp index f9b8a9437dc..1ad4d60bc7f 100644 --- a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp @@ -18,7 +18,7 @@ namespace search::queryeval { void maybe_eliminate_self(Blueprint* &self, Blueprint::UP replacement) { // replace with replacement - if (replacement.get() != nullptr) { + if (replacement) { Blueprint *tmp = replacement.release(); tmp->setParent(self->getParent()); tmp->setSourceId(self->getSourceId()); @@ -41,9 +41,9 @@ Blueprint::HitEstimate Blueprint::max(const std::vector<HitEstimate> &data) { HitEstimate est; - for (size_t i = 0; i < data.size(); ++i) { - if (est.empty || est.estHits < data[i].estHits) { - est = data[i]; + for (const HitEstimate & hitEst : data) { + if (est.empty || est.estHits < hitEst.estHits) { + est = hitEst; } } return est; @@ -69,7 +69,7 @@ Blueprint::State::State(const FieldSpecBaseList &fields_in) { } -Blueprint::State::~State() { } +Blueprint::State::~State() = default; Blueprint::Blueprint() : _parent(0), @@ -79,9 +79,7 @@ Blueprint::Blueprint() { } -Blueprint::~Blueprint() -{ -} +Blueprint::~Blueprint() = default; Blueprint::UP Blueprint::optimize(Blueprint::UP bp) { @@ -180,8 +178,8 @@ void IntermediateBlueprint::setDocIdLimit(uint32_t limit) { Blueprint::setDocIdLimit(limit); - for (size_t i = 0; i < _children.size(); ++i) { - _children[i]->setDocIdLimit(limit); + for (Blueprint * child : _children) { + child->setDocIdLimit(limit); } } @@ -190,8 +188,8 @@ IntermediateBlueprint::calculateEstimate() const { std::vector<HitEstimate> estimates; estimates.reserve(_children.size()); - for (size_t i = 0; i < _children.size(); ++i) { - estimates.push_back(_children[i]->getState().estimate()); + for (const Blueprint * child : _children) { + estimates.push_back(child->getState().estimate()); } return combine(estimates); } @@ -200,8 +198,8 @@ uint32_t IntermediateBlueprint::calculate_tree_size() const { uint32_t nodes = 1; - for (size_t i = 0; i < _children.size(); ++i) { - nodes += _children[i]->getState().tree_size(); + for (const Blueprint * child : _children) { + nodes += child->getState().tree_size(); } return nodes; } @@ -212,8 +210,8 @@ IntermediateBlueprint::infer_allow_termwise_eval() const if (!supports_termwise_children()) { return false; } - for (size_t i = 0; i < _children.size(); ++i) { - if (!_children[i]->getState().allow_termwise_eval()) { + for (const Blueprint * child : _children) { + if (!child->getState().allow_termwise_eval()) { return false; } } @@ -255,8 +253,8 @@ IntermediateBlueprint::mixChildrenFields() const Map fieldMap; FieldSpecBaseList fieldList; - for (size_t i = 0; i < _children.size(); ++i) { - const State &childState = _children[i]->getState(); + for (const Blueprint * child : _children) { + const State &childState = child->getState(); if (!childState.isTermLike()) { return fieldList; // empty: non-term-like child } @@ -271,8 +269,8 @@ IntermediateBlueprint::mixChildrenFields() const } } } - for (MapPos pos = fieldMap.begin(); pos != fieldMap.end(); ++pos) { - fieldList.add(*(pos->second)); + for (const auto & entry : fieldMap) { + fieldList.add(*entry.second); } return fieldList; } @@ -306,8 +304,8 @@ IntermediateBlueprint::optimize(Blueprint* &self) { assert(self == this); if (should_optimize_children()) { - for (size_t i = 0; i < _children.size(); ++i) { - _children[i]->optimize(_children[i]); + for (auto & child : _children) { + child->optimize(child); } } optimize_self(); @@ -328,10 +326,7 @@ IntermediateBlueprint::createSearch(fef::MatchData &md, bool strict) const return createIntermediateSearch(subSearches, strict, md); } -IntermediateBlueprint::IntermediateBlueprint() - : _children() -{ -} +IntermediateBlueprint::IntermediateBlueprint() = default; const Blueprint & IntermediateBlueprint::getChild(size_t n) const @@ -396,8 +391,8 @@ IntermediateBlueprint::fetchPostings(bool strict) void IntermediateBlueprint::freeze() { - for (size_t i = 0; i < _children.size(); ++i) { - _children[i]->freeze(); + for (Blueprint * child : _children) { + child->freeze(); } freeze_self(); } @@ -407,7 +402,7 @@ namespace { bool areAnyParentsEquiv(const Blueprint * node) { - return (node == NULL) + return (node == nullptr) ? false : node->isEquiv() ? true @@ -436,7 +431,8 @@ IntermediateBlueprint::calculateUnpackInfo(const fef::MatchData & md) const const Blueprint & child = getChild(i); const State &cs = child.getState(); bool canSkipUnpack(canBlueprintSkipUnpack(child, md)); - LOG(debug, "Child[%ld] has %ld fields. canSkipUnpack='%s'.", i, cs.numFields(), canSkipUnpack ? "true" : "false"); + LOG(debug, "Child[%ld] has %ld fields. canSkipUnpack='%s'.", + i, cs.numFields(), canSkipUnpack ? "true" : "false"); for (size_t j = 0; canSkipUnpack && (j < cs.numFields()); ++j) { if ( ! cs.field(j).resolve(md)->isNotNeeded()) { LOG(debug, "Child[%ld].field(%ld).fieldId=%d need unpack.", i, j, cs.field(j).getFieldId()); @@ -469,7 +465,7 @@ LeafBlueprint::LeafBlueprint(const FieldSpecBaseList &fields, bool allow_termwis _state.allow_termwise_eval(allow_termwise_eval); } -LeafBlueprint::~LeafBlueprint() { } +LeafBlueprint::~LeafBlueprint() = default; void LeafBlueprint::fetchPostings(bool strict) diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.h b/searchlib/src/vespa/searchlib/queryeval/blueprint.h index d9033693371..165f592867a 100644 --- a/searchlib/src/vespa/searchlib/queryeval/blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.h @@ -72,9 +72,9 @@ public: size_t numFields() const { return _fields.size(); } const FieldSpecBase &field(size_t idx) const { return _fields[idx]; } const FieldSpecBase *lookupField(uint32_t fieldId) const { - for (size_t i = 0; i < _fields.size(); ++i) { - if (_fields[i].getFieldId() == fieldId) { - return &_fields[i]; + for (const FieldSpecBase & field : _fields) { + if (field.getFieldId() == fieldId) { + return &field; } } return nullptr; @@ -240,7 +240,7 @@ protected: public: typedef std::vector<size_t> IndexList; IntermediateBlueprint(); - virtual ~IntermediateBlueprint(); + ~IntermediateBlueprint() override; void setDocIdLimit(uint32_t limit) override final; @@ -285,7 +285,7 @@ protected: LeafBlueprint(const FieldSpecBaseList &fields, bool allow_termwise_eval); public: - ~LeafBlueprint(); + ~LeafBlueprint() override; const State &getState() const override final { return _state; } void setDocIdLimit(uint32_t limit) override final { Blueprint::setDocIdLimit(limit); } void fetchPostings(bool strict) override; diff --git a/searchlib/src/vespa/searchlib/queryeval/field_spec.h b/searchlib/src/vespa/searchlib/queryeval/field_spec.h index 7da3d6a8ecc..b274e2c6751 100644 --- a/searchlib/src/vespa/searchlib/queryeval/field_spec.h +++ b/searchlib/src/vespa/searchlib/queryeval/field_spec.h @@ -4,12 +4,11 @@ #include <vespa/searchlib/fef/handle.h> #include <vespa/searchlib/fef/matchdata.h> -#include <vector> #include <vespa/vespalib/stllike/string.h> +#include <vector> namespace search::queryeval { - /** * Base description of a single field to be searched. **/ @@ -61,27 +60,22 @@ private: class FieldSpecBaseList { private: - std::vector<FieldSpecBase> _list; + using List = std::vector<FieldSpecBase>; + List _list; public: + using const_iterator = List::const_iterator; FieldSpecBaseList &add(const FieldSpecBase &spec) { _list.push_back(spec); return *this; } - bool empty() const { - return _list.empty(); - } - size_t size() const { - return _list.size(); - } - const FieldSpecBase &operator[](size_t i) const { - return _list[i]; - } + bool empty() const { return _list.empty(); } + size_t size() const { return _list.size(); } + const_iterator begin() const { return _list.begin(); } + const_iterator end() const { return _list.end(); } + const FieldSpecBase &operator[](size_t i) const { return _list[i]; } void clear() { _list.clear(); } - - void swap(FieldSpecBaseList & rhs) { - _list.swap(rhs._list); - } + void swap(FieldSpecBaseList & rhs) { _list.swap(rhs._list); } }; /** @@ -97,19 +91,11 @@ public: _list.push_back(spec); return *this; } - bool empty() const { - return _list.empty(); - } - size_t size() const { - return _list.size(); - } - const FieldSpec &operator[](size_t i) const { - return _list[i]; - } + bool empty() const { return _list.empty(); } + size_t size() const { return _list.size(); } + const FieldSpec &operator[](size_t i) const { return _list[i]; } void clear() { _list.clear(); } - void swap(FieldSpecList & rhs) { - _list.swap(rhs._list); - } + void swap(FieldSpecList & rhs) { _list.swap(rhs._list); } }; } diff --git a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp index 9bc9d3161e6..5cb51aa4fd0 100644 --- a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp @@ -302,7 +302,7 @@ OrBlueprint::createIntermediateSearch(const MultiSearch::Children &subSearches, } //----------------------------------------------------------------------------- -WeakAndBlueprint::~WeakAndBlueprint() {} +WeakAndBlueprint::~WeakAndBlueprint() = default; Blueprint::HitEstimate WeakAndBlueprint::combine(const std::vector<HitEstimate> &data) const |