diff options
author | Geir Storli <geirst@yahooinc.com> | 2023-03-31 14:13:39 +0000 |
---|---|---|
committer | Geir Storli <geirst@yahooinc.com> | 2023-03-31 14:13:39 +0000 |
commit | 0ac05b65c3a4246311763429b2ec3e31ad8e30b0 (patch) | |
tree | 1f8903f4b537f3c5a2f5c20516b6ab298977b944 /streamingvisitors | |
parent | d65d548169183b47b931b3c5e39ad5a8fae06ce5 (diff) |
Use one MatchingElementsFields instance per summary class.
This avoids calculating MatchingElements for fields that exist in other summary classes.
Diffstat (limited to 'streamingvisitors')
-rw-r--r-- | streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp | 9 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h | 3 |
2 files changed, 7 insertions, 5 deletions
diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp index 36873b713aa..b103d7d85b2 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp @@ -48,7 +48,8 @@ DocsumFieldWriterFactory::~DocsumFieldWriterFactory() = default; std::unique_ptr<DocsumFieldWriter> DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& field_name, const vespalib::string& command, - const vespalib::string& source) + const vespalib::string& source, + std::shared_ptr<MatchingElementsFields> matching_elems_fields) { std::unique_ptr<DocsumFieldWriter> fieldWriter; using namespace search::docsummary; @@ -65,10 +66,10 @@ DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fie } else if ((command == command::matched_attribute_elements_filter) || (command == command::matched_elements_filter)) { vespalib::string source_field = source.empty() ? field_name : source; - populate_fields(*_matching_elems_fields, _vsm_fields_config, source_field); - fieldWriter = MatchedElementsFilterDFW::create(source_field, _matching_elems_fields); + populate_fields(*matching_elems_fields, _vsm_fields_config, source_field); + fieldWriter = MatchedElementsFilterDFW::create(source_field, matching_elems_fields); } else { - return search::docsummary::DocsumFieldWriterFactory::create_docsum_field_writer(field_name, command, source); + return search::docsummary::DocsumFieldWriterFactory::create_docsum_field_writer(field_name, command, source, matching_elems_fields); } return fieldWriter; } diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h index 078c466d3d2..ac5cae8c49d 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h +++ b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h @@ -21,7 +21,8 @@ public: std::unique_ptr<search::docsummary::DocsumFieldWriter> create_docsum_field_writer(const vespalib::string& field_name, const vespalib::string& command, - const vespalib::string& source) override; + const vespalib::string& source, + std::shared_ptr<search::MatchingElementsFields> matching_elems_fields) override; }; } |