From 0164f1909840b51a6211afaa0b01017738ec494a Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Mon, 19 Sep 2022 13:41:29 +0200 Subject: Use SlimeFiller instead of SlimeFieldWriter for streaming search. --- .../searchsummary/docsummary/slime_filler_filter.cpp | 18 ++++++++++++++++++ .../searchsummary/docsummary/slime_filler_filter.h | 6 ++++++ 2 files changed, 24 insertions(+) (limited to 'searchsummary') diff --git a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler_filter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler_filter.cpp index db28a1ae5cf..80e14188f5f 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler_filter.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler_filter.cpp @@ -64,4 +64,22 @@ SlimeFillerFilter::add(vespalib::stringref field_path) return *this; } +void +SlimeFillerFilter::add_remaining(std::unique_ptr& filter, vespalib::stringref field_path) +{ + if (filter) { + auto dot_pos = field_path.find('.'); + if (dot_pos != vespalib::string::npos) { + auto remaining_path = field_path.substr(dot_pos + 1); + if (!remaining_path.empty()) { + filter->add(remaining_path); + } else { + filter.reset(); + } + } else { + filter.reset(); + } + } +} + } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler_filter.h b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler_filter.h index ba7ba6fe159..c6b485a7b11 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/slime_filler_filter.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/slime_filler_filter.h @@ -24,6 +24,12 @@ public: static std::optional get_filter(const SlimeFillerFilter* filter, vespalib::stringref field_name); bool empty() const; SlimeFillerFilter& add(vespalib::stringref field_path); + + /* + * Called by DocsumFilter::prepareFieldSpec() wich each input field name as field_path. First component + * is assumed to be the same as the output field name. + */ + static void add_remaining(std::unique_ptr& filter, vespalib::stringref field_path); }; } -- cgit v1.2.3