aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahoo-inc.com>2016-12-08 11:37:17 +0000
committerTor Egge <Tor.Egge@yahoo-inc.com>2016-12-08 11:37:17 +0000
commit4300dc35225ef581d08af98d24cbc73fe4a37af0 (patch)
tree562664c75ef862c2b95ef2ec6c19de4902622d74 /searchlib
parente3fddaa2e23ef8e7a58148a75b3642e99b197045 (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')
-rw-r--r--searchlib/src/vespa/searchlib/features/constant_feature.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/features/constant_tensor_executor.h4
-rw-r--r--searchlib/src/vespa/searchlib/features/dense_tensor_attribute_executor.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_attribute_executor.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h2
-rw-r--r--searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp10
-rw-r--r--searchlib/src/vespa/searchlib/fef/featureexecutor.h6
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;