aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-10-12 21:28:24 +0200
committerGitHub <noreply@github.com>2023-10-12 21:28:24 +0200
commitbb3ecff6954f3928c549ae4b967d35865f151320 (patch)
tree8e23f2038425c01dbd9f132d7390f399ddc0192c
parent7060f6a27b43e3e3265ba26f6eed8481b6ceb0f4 (diff)
parent8ecab6547d68bcb155a6f1672670855410c85e8d (diff)
Merge pull request #28906 from vespa-engine/toregge/enable-passing-string-field-converter-to-docsum-store-document-insert-summary-field
Enable passing search::docsummary::IStringFieldConverter pointer to
-rw-r--r--searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp4
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h3
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp8
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/slime_filler.h4
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp12
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h4
8 files changed, 21 insertions, 18 deletions
diff --git a/searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp b/searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp
index 9468cc30a3d..10aedc6d9d0 100644
--- a/searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp
+++ b/searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp
@@ -351,7 +351,7 @@ SlimeFillerTest::expect_insert_summary_field_with_field_filter(const vespalib::s
{
Slime slime;
SlimeInserter inserter(slime);
- SlimeFiller::insert_summary_field_with_field_filter(fv, inserter, filter);
+ SlimeFiller::insert_summary_field_with_field_filter(fv, inserter, nullptr, filter);
auto act = slime_to_string(slime);
EXPECT_EQ(exp, act);
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp
index c6756a6fd1a..63b71929d63 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp
@@ -37,11 +37,11 @@ DocsumStoreDocument::get_field_value(const vespalib::string& field_name) const
}
void
-DocsumStoreDocument::insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const
+DocsumStoreDocument::insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter) const
{
auto field_value = get_field_value(field_name);
if (field_value) {
- SlimeFiller::insert_summary_field(*field_value, inserter);
+ SlimeFiller::insert_summary_field(*field_value, inserter, converter);
}
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h
index f6e4e7e1244..3d8ca8abcc1 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h
@@ -18,7 +18,7 @@ public:
explicit DocsumStoreDocument(std::unique_ptr<document::Document> document);
~DocsumStoreDocument() override;
DocsumStoreFieldValue get_field_value(const vespalib::string& field_name) const override;
- void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const override;
+ void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter) const override;
void insert_juniper_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter, IJuniperConverter& converter) const override;
void insert_document_id(vespalib::slime::Inserter& inserter) const override;
};
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 ffd37da4026..a229e98bb4b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h
@@ -10,6 +10,7 @@ namespace vespalib::slime { struct Inserter; }
namespace search::docsummary {
class IJuniperConverter;
+class IStringFieldConverter;
/**
* Interface class providing access to a document retrieved from an IDocsumStore.
@@ -21,7 +22,7 @@ class IDocsumStoreDocument
public:
virtual ~IDocsumStoreDocument() = default;
virtual DocsumStoreFieldValue get_field_value(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_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter = nullptr) const = 0;
virtual void insert_juniper_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter, IJuniperConverter& converter) const = 0;
virtual void insert_document_id(vespalib::slime::Inserter& inserter) const = 0;
};
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp
index b3678a94ca7..7266642b18b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.cpp
@@ -335,12 +335,12 @@ SlimeFiller::visit(const ReferenceFieldValue& value)
}
void
-SlimeFiller::insert_summary_field(const FieldValue& value, vespalib::slime::Inserter& inserter)
+SlimeFiller::insert_summary_field(const FieldValue& value, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter)
{
CheckUndefinedValueVisitor check_undefined;
value.accept(check_undefined);
if (!check_undefined.is_undefined()) {
- SlimeFiller visitor(inserter);
+ SlimeFiller visitor(inserter, converter, SlimeFillerFilter::all());
value.accept(visitor);
}
}
@@ -357,12 +357,12 @@ SlimeFiller::insert_summary_field_with_filter(const FieldValue& value, vespalib:
}
void
-SlimeFiller::insert_summary_field_with_field_filter(const document::FieldValue& value, vespalib::slime::Inserter& inserter, const SlimeFillerFilter* filter)
+SlimeFiller::insert_summary_field_with_field_filter(const document::FieldValue& value, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter, const SlimeFillerFilter* filter)
{
CheckUndefinedValueVisitor check_undefined;
value.accept(check_undefined);
if (!check_undefined.is_undefined()) {
- SlimeFiller visitor(inserter, nullptr, (filter != nullptr) ? filter->begin() : SlimeFillerFilter::all());
+ SlimeFiller visitor(inserter, converter, (filter != nullptr) ? filter->begin() : SlimeFillerFilter::all());
value.accept(visitor);
}
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.h b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.h
index ff71cb7239c..547d2a13ec3 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler.h
@@ -59,13 +59,13 @@ public:
SlimeFillerFilter::Iterator filter);
~SlimeFiller() override;
- static void insert_summary_field(const document::FieldValue& value, vespalib::slime::Inserter& inserter);
+ static void insert_summary_field(const document::FieldValue& value, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter = nullptr);
/**
* Insert the given field value, but only the elements that are contained in the matching_elems vector.
*/
static void insert_summary_field_with_filter(const document::FieldValue& value, vespalib::slime::Inserter& inserter, const std::vector<uint32_t>& matching_elems);
- static void insert_summary_field_with_field_filter(const document::FieldValue& value, vespalib::slime::Inserter& inserter, const SlimeFillerFilter* filter);
+ static void insert_summary_field_with_field_filter(const document::FieldValue& value, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter, const SlimeFillerFilter* filter);
static void insert_juniper_field(const document::FieldValue& value, vespalib::slime::Inserter& inserter, IStringFieldConverter& converter);
};
diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
index 23985fbce13..b48f556f4be 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
+++ b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp
@@ -172,7 +172,7 @@ public:
DocsumStoreVsmDocument(DocsumFilter& docsum_filter, const Document& vsm_document);
~DocsumStoreVsmDocument() override;
DocsumStoreFieldValue get_field_value(const vespalib::string& field_name) const override;
- void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const override;
+ void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter) const override;
void insert_juniper_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter, IJuniperConverter& converter) const override;
void insert_document_id(vespalib::slime::Inserter& inserter) const override;
};
@@ -212,13 +212,13 @@ DocsumStoreVsmDocument::get_field_value(const vespalib::string& field_name) cons
}
void
-DocsumStoreVsmDocument::insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const
+DocsumStoreVsmDocument::insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter) const
{
if (_document != nullptr) {
auto entry_idx = _result_class.getIndexFromName(field_name.c_str());
if (entry_idx >= 0) {
assert((uint32_t) entry_idx < _result_class.getNumEntries());
- _docsum_filter.insert_summary_field(entry_idx, _vsm_document, inserter);
+ _docsum_filter.insert_summary_field(entry_idx, _vsm_document, inserter, converter);
return;
}
try {
@@ -226,7 +226,7 @@ DocsumStoreVsmDocument::insert_summary_field(const vespalib::string& field_name,
auto value(field.getDataType().createFieldValue());
if (value) {
if (_document->getValue(field, *value)) {
- SlimeFiller::insert_summary_field(*value, inserter);
+ SlimeFiller::insert_summary_field(*value, inserter, converter);
}
}
} catch (document::FieldNotFoundException&) {
@@ -393,14 +393,14 @@ DocsumFilter::get_summary_field(uint32_t entry_idx, const Document& doc)
}
void
-DocsumFilter::insert_summary_field(uint32_t entry_idx, const Document& doc, vespalib::slime::Inserter& inserter)
+DocsumFilter::insert_summary_field(uint32_t entry_idx, const Document& doc, vespalib::slime::Inserter& inserter, IStringFieldConverter* converter)
{
const auto& field_spec = _fields[entry_idx];
auto single_source_field_id = get_single_source_field_id(field_spec);
if (single_source_field_id.has_value()) {
auto field_value = doc.getField(single_source_field_id.value());
if (field_value != nullptr) {
- SlimeFiller::insert_summary_field_with_field_filter(*field_value, inserter, field_spec.get_filter());
+ SlimeFiller::insert_summary_field_with_field_filter(*field_value, inserter, converter, field_spec.get_filter());
}
return;
}
diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h
index db35fa2ff27..2232d723781 100644
--- a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h
+++ b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.h
@@ -13,6 +13,8 @@
using search::docsummary::IDocsumStore;
+namespace search::docsummary { class IStringFieldConverter; }
+
namespace vsm {
/**
@@ -66,7 +68,7 @@ public:
std::unique_ptr<const search::docsummary::IDocsumStoreDocument> get_document(uint32_t id) override;
search::docsummary::DocsumStoreFieldValue get_summary_field(uint32_t entry_idx, const Document& doc);
- void insert_summary_field(uint32_t entry_idx, const Document& doc, vespalib::slime::Inserter& inserter);
+ void insert_summary_field(uint32_t entry_idx, const Document& doc, vespalib::slime::Inserter& inserter, search::docsummary::IStringFieldConverter* converter);
bool has_flatten_juniper_command(uint32_t entry_idx) const;
FieldModifier* get_field_modifier(uint32_t entry_idx);
};