diff options
author | Haavard <havardpe@yahoo-inc.com> | 2017-02-24 09:01:52 +0000 |
---|---|---|
committer | Haavard <havardpe@yahoo-inc.com> | 2017-02-24 09:01:52 +0000 |
commit | bfdaa16177e98d3396203e203dbdaad0a7681c7b (patch) | |
tree | 0b143ba08870717d57a0b2aced51d293a38c9ab0 /searchlib | |
parent | 4648d58976d5cb8ae84c11beb10f564839751a0f (diff) |
never run execute directly
Diffstat (limited to 'searchlib')
4 files changed, 12 insertions, 6 deletions
diff --git a/searchlib/src/tests/fef/featureoverride/featureoverride.cpp b/searchlib/src/tests/fef/featureoverride/featureoverride.cpp index e77e50a99c8..ec82adc1b3a 100644 --- a/searchlib/src/tests/fef/featureoverride/featureoverride.cpp +++ b/searchlib/src/tests/fef/featureoverride/featureoverride.cpp @@ -34,7 +34,7 @@ struct Fixture md = mdl.createMatchData(); for (const auto &executor : executors) { executor->bind_match_data(*md); - executor->execute(1); + executor->lazy_execute(1); } return *this; } diff --git a/searchlib/src/vespa/searchlib/fef/featureexecutor.h b/searchlib/src/vespa/searchlib/fef/featureexecutor.h index 117e0b95194..b2583b561d5 100644 --- a/searchlib/src/vespa/searchlib/fef/featureexecutor.h +++ b/searchlib/src/vespa/searchlib/fef/featureexecutor.h @@ -103,6 +103,13 @@ protected: virtual void handle_bind_outputs(vespalib::ArrayRef<NumberOrObject> outputs); virtual void handle_bind_match_data(MatchData &md); + /** + * Execute this feature executor for the given document. + * + * @param docid the local document id being evaluated + **/ + virtual void execute(uint32_t docId) = 0; + public: /** * Create a feature executor that has not yet been bound to neither @@ -137,12 +144,11 @@ public: virtual bool isPure(); /** - * Execute this feature executor on the given data. + * Make sure this executor has been executed for the given + * document. * * @param docid the local document id being evaluated **/ - virtual void execute(uint32_t docId) = 0; - void lazy_execute(uint32_t docid) { if (_inputs.get_docid() != docid) { _inputs.set_docid(docid); diff --git a/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp b/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp index c4557d48d2e..364abea4942 100644 --- a/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp +++ b/searchlib/src/vespa/searchlib/fef/featureoverrider.cpp @@ -34,7 +34,7 @@ FeatureOverrider::isPure() void FeatureOverrider::execute(uint32_t docId) { - _executor.execute(docId); + _executor.lazy_execute(docId); if (_outputIdx < outputs().size()) { outputs().set_number(_outputIdx, _value); } diff --git a/searchlib/src/vespa/searchlib/fef/rank_program.cpp b/searchlib/src/vespa/searchlib/fef/rank_program.cpp index abc6deb8618..df16396aa8a 100644 --- a/searchlib/src/vespa/searchlib/fef/rank_program.cpp +++ b/searchlib/src/vespa/searchlib/fef/rank_program.cpp @@ -105,7 +105,7 @@ RankProgram::check_const(FeatureExecutor *executor, const std::vector<BlueprintR void RankProgram::run_const(FeatureExecutor *executor) { - executor->execute(1); + executor->lazy_execute(1); const auto &outputs = executor->outputs(); for (size_t out_idx = 0; out_idx < outputs.size(); ++out_idx) { _is_const.insert(outputs.get_raw(out_idx)); |