diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-10-13 14:11:28 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-10-15 08:18:59 +0000 |
commit | 08393e9e14635f1c6a6c84650c25023a0db7ed0b (patch) | |
tree | 48aae1605140fc6ff7d571084f345d33a3189c62 /streamingvisitors/src | |
parent | 61eaea251e8cacd320ac10754ffd1513d8638043 (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/src')
-rw-r--r-- | streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp | 8 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp | 7 |
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()); |