aboutsummaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2020-10-13 14:11:28 +0000
committerArne Juul <arnej@verizonmedia.com>2020-10-15 08:18:59 +0000
commit08393e9e14635f1c6a6c84650c25023a0db7ed0b (patch)
tree48aae1605140fc6ff7d571084f345d33a3189c62 /streamingvisitors
parent61eaea251e8cacd320ac10754ffd1513d8638043 (diff)
handle both engine- and factory-based tensors
* use EngineOrFactory::get() instead of DefaultTensorEngine::ref() * avoid direct use of DenseTensorView etc where possible * use eval::Value instead of tensor::Tensor where possible
Diffstat (limited to 'streamingvisitors')
-rw-r--r--streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp8
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp7
2 files changed, 7 insertions, 8 deletions
diff --git a/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp b/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp
index bd567964e8d..d770a4d759b 100644
--- a/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp
+++ b/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp
@@ -8,6 +8,7 @@
#include <vespa/searchvisitor/hitcollector.h>
#include <vespa/eval/eval/value.h>
#include <vespa/eval/eval/tensor_spec.h>
+#include <vespa/eval/eval/engine_or_factory.h>
#include <vespa/eval/tensor/default_tensor_engine.h>
#include <vespa/vespalib/objects/nbostream.h>
@@ -17,11 +18,10 @@ using namespace vespalib;
using namespace vdslib;
using namespace vsm;
using vespalib::nbostream;
+using vespalib::eval::EngineOrFactory;
using vespalib::eval::Value;
using vespalib::eval::DoubleValue;
using vespalib::eval::TensorSpec;
-using vespalib::tensor::DefaultTensorEngine;
-
namespace streaming {
@@ -253,7 +253,7 @@ public:
~MyRankProgram();
virtual void run(uint32_t docid, const std::vector<search::fef::TermFieldMatchData> &) override {
_boxed_double = std::make_unique<DoubleValue>(docid + 30);
- _tensor = DefaultTensorEngine::ref().from_spec(TensorSpec("tensor(x{})").add({{"x", "a"}}, docid + 20));
+ _tensor = EngineOrFactory::get().from_spec(TensorSpec("tensor(x{})").add({{"x", "a"}}, docid + 20));
_fooValue.as_number = docid + 10;
_barValue.as_object = *_boxed_double;
_bazValue.as_object = *_tensor;
@@ -308,7 +308,7 @@ HitCollectorTest::testFeatureSet()
EXPECT_TRUE(!f[2].is_double());
EXPECT_TRUE(f[2].is_data());
{
- auto &engine = DefaultTensorEngine::ref();
+ auto engine = EngineOrFactory::get();
nbostream buf(f[2].as_data().data, f[2].as_data().size);
auto actual = engine.to_spec(*engine.decode(buf));
auto expect = TensorSpec("tensor(x{})").add({{"x", "a"}}, 23);
diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp
index f3850154505..12dce7d376c 100644
--- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp
@@ -4,8 +4,7 @@
#include <vespa/searchlib/fef/feature_resolver.h>
#include <vespa/vespalib/util/stringfmt.h>
#include <algorithm>
-#include <vespa/eval/eval/tensor.h>
-#include <vespa/eval/eval/tensor_engine.h>
+#include <vespa/eval/eval/engine_or_factory.h>
#include <vespa/vespalib/objects/nbostream.h>
#include <vespa/log/log.h>
@@ -163,9 +162,9 @@ HitCollector::getFeatureSet(IRankProgram &rankProgram,
for (uint32_t j = 0; j < names.size(); ++j) {
if (resolver.is_object(j)) {
auto obj = resolver.resolve(j).as_object(docId);
- if (const auto *tensor = obj.get().as_tensor()) {
+ if (! obj.get().is_double()) {
vespalib::nbostream buf;
- tensor->engine().encode(*tensor, buf);
+ vespalib::eval::EngineOrFactory::get().encode(obj.get(), buf);
f[j].set_data(vespalib::Memory(buf.peek(), buf.size()));
} else {
f[j].set_double(obj.get().as_double());