diff options
author | Tor Egge <Tor.Egge@yahoo-inc.com> | 2016-12-08 11:37:17 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahoo-inc.com> | 2016-12-08 11:37:17 +0000 |
commit | 4300dc35225ef581d08af98d24cbc73fe4a37af0 (patch) | |
tree | 562664c75ef862c2b95ef2ec6c19de4902622d74 /searchlib | |
parent | e3fddaa2e23ef8e7a58148a75b3642e99b197045 (diff) |
Use methods on input and output objects to get/set feature values instead of
directly resolving feature location via match data.
Diffstat (limited to 'searchlib')
7 files changed, 18 insertions, 12 deletions
diff --git a/searchlib/src/vespa/searchlib/features/constant_feature.cpp b/searchlib/src/vespa/searchlib/features/constant_feature.cpp index 014efdeb5bc..51a2904da0b 100644 --- a/searchlib/src/vespa/searchlib/features/constant_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/constant_feature.cpp @@ -27,8 +27,8 @@ public: : _value(value) {} virtual bool isPure() override { return true; } - virtual void execute(fef::MatchData &data) override { - *data.resolve_object_feature(outputs()[0]) = _value; + virtual void execute(fef::MatchData &) override { + outputs().set_object(0, _value); } static FeatureExecutor &create(const vespalib::eval::Value &value, vespalib::Stash &stash) { return stash.create<ConstantFeatureExecutor>(value); diff --git a/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h b/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h index 2d98b6025d4..b94e1884137 100644 --- a/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h +++ b/searchlib/src/vespa/searchlib/features/constant_tensor_executor.h @@ -25,8 +25,8 @@ public: : _tensor(std::move(tensor)) {} virtual bool isPure() override { return true; } - virtual void execute(fef::MatchData &data) override { - *data.resolve_object_feature(outputs()[0]) = *_tensor; + virtual void execute(fef::MatchData &) override { + outputs().set_object(0, *_tensor); } static fef::FeatureExecutor &create(std::unique_ptr<vespalib::eval::Tensor> tensor, vespalib::Stash &stash) { return stash.create<ConstantTensorExecutor>(std::make_unique<vespalib::eval::TensorValue>(std::move(tensor))); diff --git a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp index 99849d4cc78..93a88fc4c2d 100644 --- a/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp +++ b/searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp @@ -24,7 +24,7 @@ void DenseTensorAttributeExecutor::execute(fef::MatchData &data) { _attribute->getTensor(data.getDocId(), _tensorView); - *data.resolve_object_feature(outputs()[0]) = _tensor; + outputs().set_object(0, _tensor); } } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp index 7c88da2cc90..5f7522ddf9e 100644 --- a/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp +++ b/searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp @@ -26,7 +26,7 @@ TensorAttributeExecutor::execute(fef::MatchData &data) } else { _tensor = TensorValue(std::move(tensor)); } - *data.resolve_object_feature(outputs()[0]) = _tensor; + outputs().set_object(0, _tensor); } } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h b/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h index 220fea0c849..63b6294d52b 100644 --- a/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h +++ b/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h @@ -49,7 +49,7 @@ TensorFromAttributeExecutor<WeightedBufferType>::execute(fef::MatchData &data) builder.add_cell(_attrBuffer[i].weight()); } _tensor = vespalib::eval::TensorValue::UP(new vespalib::eval::TensorValue(builder.build())); - *data.resolve_object_feature(outputs()[0]) = *_tensor; + outputs().set_object(0, *_tensor); } } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp b/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp index f417e5c29fa..665f93e6e18 100644 --- a/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp @@ -149,11 +149,11 @@ TextSimilarityExecutor::execute(search::fef::MatchData &data) } } state.calculateScore(_handles.size(), _total_term_weight, - *data.resolveFeature(outputs()[0]), - *data.resolveFeature(outputs()[1]), - *data.resolveFeature(outputs()[2]), - *data.resolveFeature(outputs()[3]), - *data.resolveFeature(outputs()[4])); + *outputs().get_number_ptr(0), + *outputs().get_number_ptr(1), + *outputs().get_number_ptr(2), + *outputs().get_number_ptr(3), + *outputs().get_number_ptr(4)); } //----------------------------------------------------------------------------- diff --git a/searchlib/src/vespa/searchlib/fef/featureexecutor.h b/searchlib/src/vespa/searchlib/fef/featureexecutor.h index caef3f4a02b..d136f998887 100644 --- a/searchlib/src/vespa/searchlib/fef/featureexecutor.h +++ b/searchlib/src/vespa/searchlib/fef/featureexecutor.h @@ -76,6 +76,12 @@ public: void set_object(size_t idx, vespalib::eval::Value::CREF value) { *_md->resolve_object_feature((*this)[idx]) = value; } + feature_t *get_number_ptr(size_t idx) { + return _md->resolveFeature((*this)[idx]); + } + vespalib::eval::Value::CREF *get_object_ptr(size_t idx) { + return _md->resolve_object_feature((*this)[idx]); + } void add(FeatureHandle handle) { if (_begin == IllegalHandle) { _begin = handle; |