aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-07-20 12:21:58 +0200
committerGitHub <noreply@github.com>2018-07-20 12:21:58 +0200
commit67893969909e31df00b319460102ffed503c7d7b (patch)
treebcc1574baa312379d15bb00233a8e21cef28fbe8 /searchlib
parentc0295935ea3e251982dee93e0dd39e0f0d2ad030 (diff)
parent4becd1651e549393dd555095d99abe6f4452afd1 (diff)
Merge pull request #6439 from vespa-engine/balder/lift-rankitem
Balder/lift rankitem
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.cpp58
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.h10
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/field_spec.h42
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp2
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