aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahooinc.com>2022-09-13 15:48:28 +0200
committerGitHub <noreply@github.com>2022-09-13 15:48:28 +0200
commit2f325645ed04b978b84d2949ec860f2c0d722c58 (patch)
tree0016834feac80a4c9cd65c5804f96c8cfb2187f8
parent565b814775cfe84dcf201a10df24170963e1e1c2 (diff)
parent2a4f28ef268818432a0038eb750fc8a738c4f864 (diff)
Merge pull request #24038 from vespa-engine/toregge/prepare-for-stacking-juniper-converters
Prepare for stacking juniper converters.
-rw-r--r--searchcore/src/tests/proton/docsummary/docsummary.cpp3
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp8
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/i_juniper_converter.h6
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp4
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 <vespa/document/fieldvalue/stringfieldvalue.h>
#include <vespa/vespalib/objects/hexdump.h>
#include <vespa/juniper/config.h>
#include <vespa/juniper/result.h>
@@ -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 <vespa/vespalib/stllike/string.h>
+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()));
}
}
}