summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp1
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp9
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h16
-rw-r--r--searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp1
-rw-r--r--searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp8
-rw-r--r--searchlib/src/tests/queryeval/blueprint/mysearch.h1
-rw-r--r--searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp1
-rw-r--r--searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp7
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.cpp9
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.h16
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp17
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp16
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/equivsearch.h11
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_result.h3
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/field_spec.h17
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/field_spec.hpp19
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/multisearch.h3
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/orsearch.h6
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/posting_info.h3
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/searchiterator.h1
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h9
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/leafspec.h4
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h9
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h10
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.cpp12
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_blueprint.h9
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h2
33 files changed, 115 insertions, 112 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp
index 0c03727e017..525f4f7a267 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_allocator.cpp
@@ -3,6 +3,7 @@
#include "lid_allocator.h"
#include <vespa/searchlib/common/bitvectoriterator.h>
#include <vespa/searchlib/fef/termfieldmatchdataarray.h>
+#include <vespa/searchlib/fef/matchdata.h>
#include <mutex>
#include <vespa/log/log.h>
diff --git a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp
index dabdf16e69e..98e44ff8e44 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.cpp
@@ -219,6 +219,15 @@ WarmupIndexCollection::getSearchableSP(uint32_t i) const
return _next->getSearchableSP(i);
}
+WarmupIndexCollection::WarmupTask::WarmupTask(std::unique_ptr<MatchData> md, WarmupIndexCollection & warmup)
+ : _warmup(warmup),
+ _matchData(std::move(md)),
+ _bluePrint(),
+ _requestContext()
+{ }
+
+WarmupIndexCollection::WarmupTask::~WarmupTask() = default;
+
void
WarmupIndexCollection::WarmupTask::run()
{
diff --git a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h
index 571353574c1..fb36807b8e4 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h
+++ b/searchcorespi/src/vespa/searchcorespi/index/warmupindexcollection.h
@@ -70,12 +70,8 @@ private:
typedef vespalib::Executor::Task Task;
class WarmupTask : public Task {
public:
- WarmupTask(MatchData::UP md, WarmupIndexCollection & warmup) :
- _warmup(warmup),
- _matchData(std::move(md)),
- _bluePrint(),
- _requestContext()
- { }
+ WarmupTask(std::unique_ptr<MatchData> md, WarmupIndexCollection & warmup);
+ ~WarmupTask() override;
WarmupTask &createBlueprint(const FieldSpec &field, const Node &term) {
_bluePrint = _warmup.createBlueprint(_requestContext, field, term);
return *this;
@@ -86,10 +82,10 @@ private:
}
private:
void run() override;
- WarmupIndexCollection & _warmup;
- MatchData::UP _matchData;
- Blueprint::UP _bluePrint;
- FakeRequestContext _requestContext;
+ WarmupIndexCollection & _warmup;
+ std::unique_ptr<MatchData> _matchData;
+ Blueprint::UP _bluePrint;
+ FakeRequestContext _requestContext;
};
void fireWarmup(Task::UP task);
diff --git a/searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp b/searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp
index e2f21a3d306..e9addae07b9 100644
--- a/searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp
+++ b/searchlib/src/tests/attribute/searchable/attributeblueprint_test.cpp
@@ -19,6 +19,7 @@
#include <vespa/searchlib/queryeval/leaf_blueprints.h>
#include <vespa/searchlib/queryeval/nearest_neighbor_blueprint.h>
#include <vespa/searchlib/tensor/dense_tensor_attribute.h>
+#include <vespa/searchlib/fef/matchdata.h>
#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/log/log.h>
diff --git a/searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp b/searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp
index d816e799b59..dd1d57fc296 100644
--- a/searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp
+++ b/searchlib/src/tests/queryeval/blueprint/leaf_blueprints_test.cpp
@@ -1,10 +1,12 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/log/log.h>
-LOG_SETUP("blueprint_test");
+
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/searchlib/queryeval/blueprint.h>
#include <vespa/searchlib/queryeval/leaf_blueprints.h>
-#include <vespa/vespalib/objects/visit.h>
+#include <vespa/searchlib/fef/matchdata.h>
+
+#include <vespa/log/log.h>
+LOG_SETUP("blueprint_test");
using namespace search::queryeval;
using namespace search::fef;
diff --git a/searchlib/src/tests/queryeval/blueprint/mysearch.h b/searchlib/src/tests/queryeval/blueprint/mysearch.h
index 73abcce3dc4..520a5d8448f 100644
--- a/searchlib/src/tests/queryeval/blueprint/mysearch.h
+++ b/searchlib/src/tests/queryeval/blueprint/mysearch.h
@@ -2,6 +2,7 @@
#include <vespa/searchlib/queryeval/blueprint.h>
#include <vespa/searchlib/queryeval/multisearch.h>
#include <vespa/searchlib/fef/termfieldmatchdataarray.h>
+#include <vespa/searchlib/fef/matchdata.h>
#include <vespa/vespalib/objects/visit.hpp>
namespace search::queryeval {
diff --git a/searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp b/searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp
index c02bea9c5df..64ff8898bb0 100644
--- a/searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp
+++ b/searchlib/src/tests/queryeval/sourceblender/sourceblender.cpp
@@ -9,6 +9,7 @@
#include <vespa/searchlib/test/searchiteratorverifier.h>
#include <vespa/searchlib/common/bitvectoriterator.h>
#include <vespa/searchlib/attribute/fixedsourceselector.h>
+#include <vespa/searchlib/fef/matchdata.h>
using namespace search::queryeval;
using namespace search::fef;
diff --git a/searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp b/searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp
index 9f4c0058b93..8d70daa4ca8 100644
--- a/searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp
+++ b/searchlib/src/tests/queryeval/termwise_eval/termwise_eval_test.cpp
@@ -11,6 +11,7 @@
#include <vespa/vespalib/test/insertion_operators.h>
#include <vespa/searchlib/test/searchiteratorverifier.h>
#include <vespa/searchlib/common/bitvectoriterator.h>
+#include <vespa/searchlib/fef/matchdata.h>
#include <vespa/vespalib/objects/visit.hpp>
using namespace vespalib;
@@ -81,15 +82,15 @@ struct MyBlueprint : SimpleLeafBlueprint {
setEstimate(HitEstimate(hits.size(), hits.empty()));
set_allow_termwise_eval(allow_termwise_eval);
}
- ~MyBlueprint();
+ ~MyBlueprint() override;
SearchIterator::UP createLeafSearch(const fef::TermFieldMatchDataArray &,
bool strict) const override
{
- return SearchIterator::UP(new MyTerm(hits, strict));
+ return std::make_unique<MyTerm>(hits, strict);
}
};
-MyBlueprint::~MyBlueprint() {}
+MyBlueprint::~MyBlueprint() = default;
struct MyOr : OrBlueprint {
bool use_my_value;
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
index d8e9c442940..8595b0eff7f 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
@@ -28,6 +28,7 @@
#include <vespa/searchlib/queryeval/wand/parallel_weak_and_search.h>
#include <vespa/searchlib/queryeval/weighted_set_term_blueprint.h>
#include <vespa/searchlib/queryeval/weighted_set_term_search.h>
+#include <vespa/searchlib/queryeval/field_spec.hpp>
#include <vespa/searchlib/tensor/dense_tensor_attribute.h>
#include <vespa/vespalib/util/regexp.h>
#include <vespa/vespalib/util/stringfmt.h>
diff --git a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp
index 735fec2bb5f..c4d2c335689 100644
--- a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp
+++ b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp
@@ -2,6 +2,7 @@
#include "posting_iterator.h"
#include <vespa/searchlib/queryeval/iterators.h>
+#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/vespalib/btree/btreeiterator.hpp>
#include <vespa/vespalib/btree/btreenode.hpp>
#include <vespa/vespalib/btree/btreenodeallocator.hpp>
diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp
index 0a4d10742f7..b6ecd8d1c7d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp
@@ -3,6 +3,7 @@
#include "blueprint.h"
#include "leaf_blueprints.h"
#include "intermediate_blueprints.h"
+#include "field_spec.hpp"
#include <vespa/searchlib/fef/termfieldmatchdataarray.h>
#include <vespa/vespalib/objects/visit.hpp>
#include <vespa/vespalib/objects/objectdumper.h>
@@ -170,10 +171,18 @@ namespace blueprint {
void
StateCache::updateState() const
{
+ assert(!frozen());
_state = calculateState();
_stale = false;
}
+void
+StateCache::notifyChange() {
+ assert(!frozen());
+ Blueprint::notifyChange();
+ _stale = true;
+}
+
} // namespace blueprint
//-----------------------------------------------------------------------------
diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.h b/searchlib/src/vespa/searchlib/queryeval/blueprint.h
index 842cd7f30ea..f982cc7b044 100644
--- a/searchlib/src/vespa/searchlib/queryeval/blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.h
@@ -5,10 +5,6 @@
#include "field_spec.h"
#include "unpackinfo.h"
#include "executeinfo.h"
-#include <vespa/searchlib/fef/handle.h>
-#include <vespa/searchlib/fef/matchdata.h>
-#include <vespa/searchlib/fef/termfieldmatchdata.h>
-#include <cassert>
namespace vespalib { class ObjectVisitor; }
namespace vespalib::slime {
@@ -16,7 +12,10 @@ namespace vespalib::slime {
struct Inserter;
}
namespace search::attribute { class ISearchContext; }
-namespace search::fef { class TermFieldMatchDataArray; }
+namespace search::fef {
+ class TermFieldMatchDataArray;
+ class MatchData;
+}
namespace search::queryeval {
@@ -218,18 +217,13 @@ private:
void updateState() const;
protected:
- void notifyChange() override final {
- assert(!frozen());
- Blueprint::notifyChange();
- _stale = true;
- }
+ void notifyChange() override final;
virtual State calculateState() const = 0;
public:
StateCache() : _stale(true), _state(FieldSpecBaseList()) {}
const State &getState() const override final {
if (_stale) {
- assert(!frozen());
updateState();
}
return _state;
diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp
index d8bb31525e9..712c49b6820 100644
--- a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.cpp
@@ -2,6 +2,7 @@
#include "dot_product_blueprint.h"
#include "dot_product_search.h"
+#include "field_spec.hpp"
#include <vespa/vespalib/objects/visit.hpp>
namespace search::queryeval {
diff --git a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp
index 8e067596adf..08a05b25772 100644
--- a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp
@@ -2,10 +2,10 @@
#include "equiv_blueprint.h"
#include "equivsearch.h"
+#include "field_spec.hpp"
#include <vespa/vespalib/objects/visit.hpp>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
EquivBlueprint::EquivBlueprint(const FieldSpecBaseList &fields,
fef::MatchDataLayout subtree_mdl)
@@ -18,17 +18,14 @@ EquivBlueprint::EquivBlueprint(const FieldSpecBaseList &fields,
{
}
-EquivBlueprint::~EquivBlueprint()
-{
-}
+EquivBlueprint::~EquivBlueprint() = default;
SearchIterator::UP
-EquivBlueprint::createLeafSearch(const search::fef::TermFieldMatchDataArray &outputs,
- bool strict) const
+EquivBlueprint::createLeafSearch(const fef::TermFieldMatchDataArray &outputs, bool strict) const
{
fef::MatchData::UP md = _layout.createMatchData();
MultiSearch::Children children(_terms.size());
- search::fef::TermMatchDataMerger::Inputs childMatch;
+ fef::TermMatchDataMerger::Inputs childMatch;
for (size_t i = 0; i < _terms.size(); ++i) {
const State &childState = _terms[i]->getState();
for (size_t j = 0; j < childState.numFields(); ++j) {
@@ -69,6 +66,4 @@ EquivBlueprint::addTerm(Blueprint::UP term, double exactness)
return *this;
}
-
-} // namespace queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp b/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp
index 0d97ade09d1..593701fd14f 100644
--- a/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp
@@ -2,8 +2,7 @@
#include "equivsearch.h"
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
template <bool strict>
class EquivImpl : public OrLikeSearch<strict, NoUnpack>
@@ -24,15 +23,15 @@ public:
**/
EquivImpl(const MultiSearch::Children &children,
fef::MatchData::UP inputMatchData,
- const search::fef::TermMatchDataMerger::Inputs &inputs,
+ const fef::TermMatchDataMerger::Inputs &inputs,
const fef::TermFieldMatchDataArray &outputs);
};
template<bool strict>
EquivImpl<strict>::EquivImpl(const MultiSearch::Children &children,
fef::MatchData::UP inputMatchData,
- const search::fef::TermMatchDataMerger::Inputs &inputs,
- const search::fef::TermFieldMatchDataArray &outputs)
+ const fef::TermMatchDataMerger::Inputs &inputs,
+ const fef::TermFieldMatchDataArray &outputs)
: OrLikeSearch<strict, NoUnpack>(children, NoUnpack()),
_inputMatchData(std::move(inputMatchData)),
@@ -54,8 +53,8 @@ EquivImpl<strict>::doUnpack(uint32_t docid)
SearchIterator *
EquivSearch::create(const Children &children,
fef::MatchData::UP inputMatchData,
- const search::fef::TermMatchDataMerger::Inputs &inputs,
- const search::fef::TermFieldMatchDataArray &outputs,
+ const fef::TermMatchDataMerger::Inputs &inputs,
+ const fef::TermFieldMatchDataArray &outputs,
bool strict)
{
if (strict) {
@@ -65,5 +64,4 @@ EquivSearch::create(const Children &children,
}
}
-} // namespace queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/equivsearch.h b/searchlib/src/vespa/searchlib/queryeval/equivsearch.h
index 580889c429c..252e17e610a 100644
--- a/searchlib/src/vespa/searchlib/queryeval/equivsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/equivsearch.h
@@ -8,8 +8,7 @@
#include <vespa/searchlib/fef/termfieldmatchdataarray.h>
#include <vespa/searchlib/fef/termmatchdatamerger.h>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* A simple implementation of the Equiv search operation.
@@ -22,11 +21,9 @@ public:
// Caller takes ownership of the returned SearchIterator.
static SearchIterator *create(const Children &children,
fef::MatchData::UP inputMD,
- const search::fef::TermMatchDataMerger::Inputs &inputs,
- const search::fef::TermFieldMatchDataArray &outputs,
+ const fef::TermMatchDataMerger::Inputs &inputs,
+ const fef::TermFieldMatchDataArray &outputs,
bool strict);
};
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_result.h b/searchlib/src/vespa/searchlib/queryeval/fake_result.h
index ddf1fa61b63..bbae5e027cf 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_result.h
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_result.h
@@ -6,6 +6,7 @@
#include <vespa/searchlib/common/feature.h>
#include <vespa/searchlib/common/fslimits.h>
#include <vector>
+#include <memory>
namespace search::queryeval {
@@ -42,7 +43,7 @@ public:
private:
std::vector<Document> _documents;
- MinMaxPostingInfo::SP _minMaxPostingInfo;
+ std::shared_ptr<MinMaxPostingInfo> _minMaxPostingInfo;
public:
FakeResult();
diff --git a/searchlib/src/vespa/searchlib/queryeval/field_spec.h b/searchlib/src/vespa/searchlib/queryeval/field_spec.h
index b274e2c6751..fd3de63cae0 100644
--- a/searchlib/src/vespa/searchlib/queryeval/field_spec.h
+++ b/searchlib/src/vespa/searchlib/queryeval/field_spec.h
@@ -3,10 +3,13 @@
#pragma once
#include <vespa/searchlib/fef/handle.h>
-#include <vespa/searchlib/fef/matchdata.h>
#include <vespa/vespalib/stllike/string.h>
#include <vector>
+namespace search::fef {
+ class MatchData;
+ class TermFieldMatchData;
+}
namespace search::queryeval {
/**
@@ -18,12 +21,8 @@ public:
FieldSpecBase(uint32_t fieldId, fef::TermFieldHandle handle, bool isFilter_ = false);
// resolve where to put match information for this term/field combination
- search::fef::TermFieldMatchData *resolve(search::fef::MatchData &md) const {
- return md.resolveTermField(getHandle());
- }
- const search::fef::TermFieldMatchData *resolve(const search::fef::MatchData &md) const {
- return md.resolveTermField(getHandle());
- }
+ fef::TermFieldMatchData *resolve(fef::MatchData &md) const;
+ const fef::TermFieldMatchData *resolve(const fef::MatchData &md) const;
uint32_t getFieldId() const { return _fieldId & 0xffffff; }
fef::TermFieldHandle getHandle() const { return _handle; }
/// a filter produces less detailed match data
@@ -45,10 +44,6 @@ public:
_name(name)
{}
- // resolve where to put match information for this term/field combination
- search::fef::TermFieldMatchData *resolve(search::fef::MatchData &md) const {
- return md.resolveTermField(getHandle());
- }
const vespalib::string & getName() const { return _name; }
private:
vespalib::string _name; // field name
diff --git a/searchlib/src/vespa/searchlib/queryeval/field_spec.hpp b/searchlib/src/vespa/searchlib/queryeval/field_spec.hpp
new file mode 100644
index 00000000000..e772f95ec19
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/queryeval/field_spec.hpp
@@ -0,0 +1,19 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "field_spec.h"
+#include <vespa/searchlib/fef/matchdata.h>
+
+namespace search::queryeval {
+
+inline fef::TermFieldMatchData *
+FieldSpecBase::resolve(fef::MatchData &md) const {
+ return md.resolveTermField(getHandle());
+}
+inline const fef::TermFieldMatchData *
+FieldSpecBase::resolve(const fef::MatchData &md) const {
+ return md.resolveTermField(getHandle());
+}
+
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp
index b40613010dc..1e618d5edf4 100644
--- a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp
@@ -7,9 +7,9 @@
#include "nearsearch.h"
#include "ranksearch.h"
#include "sourceblendersearch.h"
-#include "equivsearch.h"
#include "termwise_blueprint_helper.h"
#include "isourceselector.h"
+#include "field_spec.hpp"
#include <vespa/searchlib/queryeval/wand/weak_and_search.h>
namespace search::queryeval {
diff --git a/searchlib/src/vespa/searchlib/queryeval/multisearch.h b/searchlib/src/vespa/searchlib/queryeval/multisearch.h
index 4b4cd101e5a..af96734b26a 100644
--- a/searchlib/src/vespa/searchlib/queryeval/multisearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/multisearch.h
@@ -3,7 +3,6 @@
#pragma once
#include "searchiterator.h"
-#include <vector>
struct MultiSearchRemoveTest;
@@ -32,7 +31,7 @@ public:
* this object takes ownership of the children.
**/
MultiSearch(const Children & children);
- virtual ~MultiSearch();
+ virtual ~MultiSearch() override;
const Children & getChildren() const { return _children; }
virtual bool isAnd() const { return false; }
virtual bool isAndNot() const { return false; }
diff --git a/searchlib/src/vespa/searchlib/queryeval/orsearch.h b/searchlib/src/vespa/searchlib/queryeval/orsearch.h
index d74348feb5e..e3d74573db8 100644
--- a/searchlib/src/vespa/searchlib/queryeval/orsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/orsearch.h
@@ -5,8 +5,7 @@
#include "multisearch.h"
#include "unpackinfo.h"
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* A simple implementation of the Or search operation.
@@ -31,5 +30,4 @@ private:
bool isOr() const override { return true; }
};
-} // namespace queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/posting_info.h b/searchlib/src/vespa/searchlib/queryeval/posting_info.h
index b7f386475d8..40fb5652d0f 100644
--- a/searchlib/src/vespa/searchlib/queryeval/posting_info.h
+++ b/searchlib/src/vespa/searchlib/queryeval/posting_info.h
@@ -2,7 +2,6 @@
#pragma once
#include <cstdint>
-#include <memory>
namespace search::queryeval {
@@ -30,8 +29,6 @@ private:
int32_t _maxWeight;
public:
- typedef std::unique_ptr<MinMaxPostingInfo> UP;
- typedef std::shared_ptr<MinMaxPostingInfo> SP;
MinMaxPostingInfo(int32_t minWeight, int32_t maxWeight)
: PostingInfo(),
_minWeight(minWeight),
diff --git a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp
index fe4619b16db..b82b7b17dea 100644
--- a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp
@@ -2,6 +2,7 @@
#include "same_element_blueprint.h"
#include "same_element_search.h"
+#include "field_spec.hpp"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/searchlib/attribute/elementiterator.h>
#include <vespa/vespalib/objects/visit.hpp>
diff --git a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
index 8ea45646af8..afc1bc8ce15 100644
--- a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
+++ b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
@@ -4,7 +4,6 @@
#include "posting_info.h"
#include "begin_and_end_id.h"
-#include <vespa/searchlib/fef/termfieldmatchdataposition.h>
#include <vespa/vespalib/stllike/string.h>
#include <vespa/vespalib/util/trinary.h>
#include <memory>
diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp
index 81e90c399ec..2c63c96695a 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp
@@ -2,6 +2,7 @@
#include "simple_phrase_blueprint.h"
#include "simple_phrase_search.h"
+#include "field_spec.hpp"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/vespalib/objects/visit.hpp>
#include <algorithm>
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h b/searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h
index db3206ab8a6..372e5f7b2d2 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h
+++ b/searchlib/src/vespa/searchlib/queryeval/test/eagerchild.h
@@ -3,9 +3,7 @@
#include <vespa/searchlib/queryeval/searchiterator.h>
-namespace search {
-namespace queryeval {
-namespace test {
+namespace search::queryeval::test {
/**
* Child iterator that has initial docid > 0.
@@ -17,7 +15,4 @@ struct EagerChild : public SearchIterator
void doUnpack(uint32_t) override {}
};
-} // namespace test
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/leafspec.h b/searchlib/src/vespa/searchlib/queryeval/test/leafspec.h
index b1e3c31e8c4..47b5ed26b60 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/leafspec.h
+++ b/searchlib/src/vespa/searchlib/queryeval/test/leafspec.h
@@ -43,9 +43,9 @@ struct LeafSpec
return *this;
}
SearchIterator *create(SearchHistory &hist, fef::TermFieldMatchData *tfmd) const {
- if (search != NULL) {
+ if (search != nullptr) {
return new TrackedSearch(name, hist, search);
- } else if (tfmd != NULL) {
+ } else if (tfmd != nullptr) {
return new TrackedSearch(name, hist, result, *tfmd,
MinMaxPostingInfo(0, maxWeight));
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h b/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h
index d57c1ff63cb..172d531e415 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h
+++ b/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h
@@ -5,9 +5,7 @@
#include <string>
#include <vector>
-namespace search {
-namespace queryeval {
-namespace test {
+namespace search::queryeval::test {
/**
* Seek and unpack history for a search iterator.
@@ -53,7 +51,4 @@ std::ostream &operator << (std::ostream &out, const SearchHistory &hist) {
return out;
}
-} // namespace test
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h b/searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h
index 2fc5412a4a0..6cb4c1a9dda 100644
--- a/searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/test/trackedsearch.h
@@ -16,11 +16,11 @@ namespace search::queryeval::test {
class TrackedSearch : public SearchIterator
{
private:
- std::string _name;
- SearchHistory &_history;
- fef::TermFieldMatchData _matchData;
- SearchIterator::UP _search;
- MinMaxPostingInfo::UP _minMaxPostingInfo;
+ std::string _name;
+ SearchHistory &_history;
+ fef::TermFieldMatchData _matchData;
+ SearchIterator::UP _search;
+ std::unique_ptr<MinMaxPostingInfo> _minMaxPostingInfo;
static fef::TermFieldMatchDataArray makeArray(fef::TermFieldMatchData &match) {
fef::TermFieldMatchDataArray array;
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 a0010c7a8f0..7e6c8cf2147 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
@@ -2,13 +2,13 @@
#include "wand_parts.h"
#include "parallel_weak_and_blueprint.h"
#include "parallel_weak_and_search.h"
-#include <vespa/searchlib/fef/termfieldmatchdata.h>
+#include <vespa/searchlib/queryeval/field_spec.hpp>
#include <vespa/searchlib/queryeval/searchiterator.h>
+#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/vespalib/objects/visit.hpp>
#include <algorithm>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
ParallelWeakAndBlueprint::ParallelWeakAndBlueprint(const FieldSpec &field,
uint32_t scoresToTrack,
@@ -78,8 +78,7 @@ ParallelWeakAndBlueprint::addTerm(Blueprint::UP term, int32_t weight)
}
SearchIterator::UP
-ParallelWeakAndBlueprint::createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda,
- bool strict) const
+ParallelWeakAndBlueprint::createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, bool strict) const
{
assert(tfmda.size() == 1);
fef::MatchData::UP childrenMatchData = _layout.createMatchData();
@@ -125,5 +124,4 @@ ParallelWeakAndBlueprint::visitMembers(vespalib::ObjectVisitor &visitor) const
visit(visitor, "_terms", _terms);
}
-} // namespace search::queryeval
-} // namespace search
+}
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 a59cdb8cbf5..842067f9849 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
@@ -9,8 +9,7 @@
#include <memory>
#include <vector>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
const uint32_t DEFAULT_PARALLEL_WAND_SCORES_ADJUST_FREQUENCY = 4;
@@ -45,7 +44,7 @@ public:
score_t scoreThreshold,
double thresholdBoostFactor,
uint32_t scoresAdjustFrequency);
- virtual ~ParallelWeakAndBlueprint();
+ virtual ~ParallelWeakAndBlueprint() override;
const WeakAndHeap &getScores() const { return _scores; }
@@ -65,6 +64,4 @@ public:
bool always_needs_unpack() const override;
};
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h
index b561292d4ac..ba0812aad48 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h
@@ -68,7 +68,7 @@ struct ParallelWeakAndSearch : public SearchIterator
static SearchIterator *createHeapWand(const Terms &terms, const MatchParams &matchParams, RankParams &&rankParams, bool strict);
static SearchIterator *create(const Terms &terms, const MatchParams &matchParams, RankParams &&rankParams, bool strict);
- static SearchIterator::UP create(search::fef::TermFieldMatchData &tmd,
+ static SearchIterator::UP create(fef::TermFieldMatchData &tmd,
const MatchParams &matchParams,
const std::vector<int32_t> &weights,
const std::vector<IDocumentWeightAttribute::LookupResult> &dict_entries,