From 2a4f28ef268818432a0038eb750fc8a738c4f864 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Tue, 13 Sep 2022 15:22:56 +0200 Subject: Prepare for stacking juniper converters. --- searchcore/src/tests/proton/docsummary/docsummary.cpp | 3 +++ .../src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp | 8 ++++++++ .../src/vespa/searchsummary/docsummary/i_juniper_converter.h | 6 ++++++ searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp | 4 ++-- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/searchcore/src/tests/proton/docsummary/docsummary.cpp b/searchcore/src/tests/proton/docsummary/docsummary.cpp index 6abaec6ec93..6001fb0c000 100644 --- a/searchcore/src/tests/proton/docsummary/docsummary.cpp +++ b/searchcore/src/tests/proton/docsummary/docsummary.cpp @@ -323,6 +323,9 @@ public: void insert_juniper_field(vespalib::stringref input, vespalib::slime::Inserter&) override { _result = input; } + void insert_juniper_field(const document::StringFieldValue& input, vespalib::slime::Inserter&) override { + _result = input.getValueRef(); + } const vespalib::string& get_result() const noexcept { return _result; } }; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp index 4fb20bb1458..fcdb81defbf 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp @@ -5,6 +5,7 @@ #include "i_docsum_store_document.h" #include "i_juniper_converter.h" #include "juniper_query_adapter.h" +#include #include #include #include @@ -114,6 +115,7 @@ public: JuniperConverter(const DynamicTeaserDFW& writer, uint32_t doc_id, GetDocsumsState& state); ~JuniperConverter() override; void insert_juniper_field(vespalib::stringref input, vespalib::slime::Inserter& inserter) override; + void insert_juniper_field(const document::StringFieldValue &input, vespalib::slime::Inserter& inserter) override; }; JuniperConverter::JuniperConverter(const DynamicTeaserDFW& writer, uint32_t doc_id, GetDocsumsState& state) @@ -132,6 +134,12 @@ JuniperConverter::insert_juniper_field(vespalib::stringref input, vespalib::slim _writer.insert_juniper_field(_doc_id, input, _state, inserter); } +void +JuniperConverter::insert_juniper_field(const document::StringFieldValue& input, vespalib::slime::Inserter& inserter) +{ + _writer.insert_juniper_field(_doc_id, input.getValueRef(), _state, inserter); +} + } void diff --git a/searchsummary/src/vespa/searchsummary/docsummary/i_juniper_converter.h b/searchsummary/src/vespa/searchsummary/docsummary/i_juniper_converter.h index f0b8ec4309f..00751082567 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/i_juniper_converter.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/i_juniper_converter.h @@ -4,6 +4,7 @@ #include +namespace document { class StringFieldValue; } namespace vespalib::slime { struct Inserter; } namespace search::docsummary { @@ -11,12 +12,17 @@ namespace search::docsummary { /** * Interface class for inserting a dynamic string based on an * annotated full string and query context. + * + * For streaming search we use the same interface in an adapter that + * calls a snippet modifier (vsm::SnippetModifier) to add the annotation + * needed by juniper. */ class IJuniperConverter { public: virtual ~IJuniperConverter() = default; virtual void insert_juniper_field(vespalib::stringref input, vespalib::slime::Inserter& inserter) = 0; + virtual void insert_juniper_field(const document::StringFieldValue &input, vespalib::slime::Inserter& inserter) = 0; }; } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp index 725ebff1f77..b3d3fde7150 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp @@ -189,9 +189,9 @@ SlimeFiller::visit(const StringFieldValue& value) } } else { if (_juniper_converter != nullptr) { - _juniper_converter->insert_juniper_field(value.getValue(), _inserter); + _juniper_converter->insert_juniper_field(value, _inserter); } else { - _inserter.insertString(Memory(value.getValue())); + _inserter.insertString(Memory(value.getValueRef())); } } } -- cgit v1.2.3