summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp11
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h1
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsum_store_field_value.h1
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/juniper_input.cpp15
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/juniper_input.h9
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp8
8 files changed, 39 insertions, 12 deletions
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp
index 71800eb2128..0a388f4de07 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp
@@ -31,6 +31,17 @@ DocsumStoreDocument::get_field_value(const vespalib::string& field_name) const
return DocsumStoreFieldValue();
}
+JuniperInput
+DocsumStoreDocument::get_juniper_input(const vespalib::string& field_name) const
+{
+ auto field_value = get_field_value(field_name);
+ if (field_value) {
+ auto field_value_with_markup = SummaryFieldConverter::convertSummaryField(true, *field_value);
+ return JuniperInput(DocsumStoreFieldValue(std::move(field_value_with_markup)));
+ }
+ return {};
+}
+
void
DocsumStoreDocument::insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const
{
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h
index 26cccc9970f..ebc3a57d201 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h
@@ -18,6 +18,7 @@ public:
DocsumStoreDocument(std::unique_ptr<document::Document> document);
~DocsumStoreDocument() override;
DocsumStoreFieldValue get_field_value(const vespalib::string& field_name) const override;
+ JuniperInput get_juniper_input(const vespalib::string& field_name) const override;
void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const override;
void insert_document_id(vespalib::slime::Inserter& inserter) const override;
};
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_field_value.h b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_field_value.h
index d06a2ab8287..71d4468a1c1 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_field_value.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_field_value.h
@@ -28,6 +28,7 @@ public:
: DocsumStoreFieldValue(nullptr)
{
}
+ DocsumStoreFieldValue(DocsumStoreFieldValue&& rhs) noexcept = default;
~DocsumStoreFieldValue() = default;
const document::FieldValue& operator*() const noexcept { return *_value; }
const document::FieldValue* operator->() const noexcept { return _value; }
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp
index 58dde39c336..667cd68e59e 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp
@@ -362,9 +362,9 @@ DynamicTeaserDFW::getJuniperInput(GeneralResult *gres) {
}
const auto* document = gres->get_document();
if (document != nullptr) {
- return JuniperInput(document->get_field_value(_input_field_name).get());
+ return document->get_juniper_input(_input_field_name);
}
- return JuniperInput(vespalib::stringref());
+ return {};
}
vespalib::string
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h b/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h
index b9c2ae76e7a..a4d1d7a0097 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h
@@ -3,6 +3,7 @@
#pragma once
#include "docsum_store_field_value.h"
+#include "juniper_input.h"
#include <vespa/vespalib/stllike/string.h>
namespace vespalib::slime { struct Inserter; }
@@ -19,6 +20,7 @@ class IDocsumStoreDocument
public:
virtual ~IDocsumStoreDocument() = default;
virtual DocsumStoreFieldValue get_field_value(const vespalib::string& field_name) const = 0;
+ virtual JuniperInput get_juniper_input(const vespalib::string& field_name) const = 0;
virtual void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const = 0;
virtual void insert_document_id(vespalib::slime::Inserter& inserter) const = 0;
};
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniper_input.cpp b/searchsummary/src/vespa/searchsummary/docsummary/juniper_input.cpp
index a9f265b0842..330c12f21d8 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/juniper_input.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/juniper_input.cpp
@@ -6,21 +6,24 @@
namespace search::docsummary {
+JuniperInput::JuniperInput()
+ : _field_value_with_markup(),
+ _value()
+{
+}
+
JuniperInput::JuniperInput(vespalib::stringref value)
: _field_value_with_markup(),
_value(value)
{
}
-JuniperInput::JuniperInput(const document::FieldValue* value)
- : _field_value_with_markup(),
+JuniperInput::JuniperInput(DocsumStoreFieldValue value)
+ : _field_value_with_markup(std::move(value)),
_value()
{
- if (value != nullptr) {
- _field_value_with_markup = SummaryFieldConverter::convertSummaryField(true, *value);
- }
if (_field_value_with_markup && _field_value_with_markup->isA(document::FieldValue::Type::STRING)) {
- const auto& string_field_value_with_markup = static_cast<document::StringFieldValue&>(*_field_value_with_markup);
+ const auto& string_field_value_with_markup = static_cast<const document::StringFieldValue&>(*_field_value_with_markup);
_value = string_field_value_with_markup.getValueRef();
}
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniper_input.h b/searchsummary/src/vespa/searchsummary/docsummary/juniper_input.h
index b9c3ee169e6..c3c1572909b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/juniper_input.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/juniper_input.h
@@ -2,8 +2,8 @@
#pragma once
+#include "docsum_store_field_value.h"
#include <vespa/vespalib/stllike/string.h>
-#include <memory>
namespace document { class FieldValue; }
@@ -13,11 +13,12 @@ namespace search::docsummary {
* Class containing input for juniper processing.
*/
class JuniperInput {
- std::unique_ptr<document::FieldValue> _field_value_with_markup;
+ DocsumStoreFieldValue _field_value_with_markup;
vespalib::stringref _value;
public:
- JuniperInput(vespalib::stringref value);
- JuniperInput(const document::FieldValue* value);
+ JuniperInput();
+ explicit JuniperInput(vespalib::stringref value);
+ explicit JuniperInput(DocsumStoreFieldValue value);
~JuniperInput();
bool empty() const noexcept { return _value.empty(); }
vespalib::stringref get_value() const noexcept { return _value; };
diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
index 953c7deb8a1..bc05ec72638 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
+++ b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
@@ -147,6 +147,7 @@ public:
DocsumStoreVsmDocument(DocsumFilter& docsum_filter, const Document& vsm_document);
~DocsumStoreVsmDocument() override;
DocsumStoreFieldValue get_field_value(const vespalib::string& field_name) const override;
+ JuniperInput get_juniper_input(const vespalib::string& field_name) const override;
void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const override;
void insert_document_id(vespalib::slime::Inserter& inserter) const override;
};
@@ -181,6 +182,13 @@ DocsumStoreVsmDocument::get_field_value(const vespalib::string& field_name) cons
return {};
}
+JuniperInput
+DocsumStoreVsmDocument::get_juniper_input(const vespalib::string& field_name) const
+{
+ // Markup for juniper has already been added due to FLATTENJUNIPER command in vsm summary config.
+ return JuniperInput(get_field_value(field_name));
+}
+
void
DocsumStoreVsmDocument::insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const
{