diff options
Diffstat (limited to 'streamingvisitors')
3 files changed, 17 insertions, 11 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 eaef0846536..f3c383a4ba5 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp @@ -14,6 +14,7 @@ using search::docsummary::CopyDFW; using search::docsummary::DocsumFieldWriter; using search::docsummary::EmptyDFW; using search::docsummary::IDocsumEnvironment; +using search::docsummary::IKeywordExtractorFactory; using search::docsummary::MatchedElementsFilterDFW; using vespa::config::search::vsm::VsmfieldsConfig; @@ -36,8 +37,8 @@ void populate_fields(MatchingElementsFields& fields, VsmfieldsConfig& fields_con } -DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, const IDocsumEnvironment& env, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config) - : search::docsummary::DocsumFieldWriterFactory(use_v8_geo_positions, env), +DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, const IDocsumEnvironment& env, const IKeywordExtractorFactory& keyword_extractor_factory, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config) + : search::docsummary::DocsumFieldWriterFactory(use_v8_geo_positions, env, keyword_extractor_factory), _vsm_fields_config(vsm_fields_config) { } 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 17c270292e2..81acd0c7668 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h +++ b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h @@ -16,7 +16,7 @@ class DocsumFieldWriterFactory : public search::docsummary::DocsumFieldWriterFac const vespa::config::search::vsm::VsmfieldsConfig& _vsm_fields_config; public: - DocsumFieldWriterFactory(bool use_v8_geo_positions, const search::docsummary::IDocsumEnvironment& env, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config); + DocsumFieldWriterFactory(bool use_v8_geo_positions, const search::docsummary::IDocsumEnvironment& env, const search::docsummary::IKeywordExtractorFactory& keyword_extractor_factory, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config); ~DocsumFieldWriterFactory() override; std::unique_ptr<search::docsummary::DocsumFieldWriter> create_docsum_field_writer(const vespalib::string& field_name, diff --git a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp index 563eda2249c..cbe3f622770 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp @@ -5,13 +5,16 @@ #include "i_matching_elements_filler.h" #include <vespa/searchlib/common/matching_elements.h> #include <vespa/searchsummary/docsummary/keywordextractor.h> +#include <vespa/searchsummary/docsummary/legacy_keyword_extractor_factory.h> #include <vespa/searchsummary/config/config-juniperrc.h> #include <vespa/log/log.h> LOG_SETUP(".vsm.vsm-adapter"); +using search::docsummary::IKeywordExtractorFactory; using search::docsummary::ResConfigEntry; using search::docsummary::KeywordExtractor; +using search::docsummary::LegacyKeywordExtractorFactory; using search::MatchingElements; using config::ConfigSnapshot; using vespa::config::search::SummaryConfig; @@ -144,22 +147,24 @@ VSMAdapter::configure(const VSMConfigSnapshot & snapshot) auto juniper = std::make_unique<juniper::Juniper>(_juniperProps.get(), &_wordFolder); docsumTools->setJuniper(std::move(juniper)); + // init keyword extractor + auto kwExtractor = std::make_unique<KeywordExtractor>(); + kwExtractor->addLegalIndexSpec(_highlightindexes.c_str()); + vespalib::string spec = kwExtractor->getLegalIndexSpec(); + LOG(debug, "index highlight spec: '%s'", spec.c_str()); + // init result config auto resCfg = std::make_unique<ResultConfig>(); - auto docsum_field_writer_factory = std::make_unique<DocsumFieldWriterFactory>(summary.get()->usev8geopositions, *docsumTools, *_fieldsCfg.get()); + std::unique_ptr<IKeywordExtractorFactory> keyword_extractor_factory = std::make_unique<LegacyKeywordExtractorFactory>(std::move(kwExtractor)); + auto docsum_field_writer_factory = std::make_unique<DocsumFieldWriterFactory>(summary.get()->usev8geopositions, *docsumTools, *keyword_extractor_factory, *_fieldsCfg.get()); if ( !resCfg->readConfig(*summary.get(), _configId.c_str(), *docsum_field_writer_factory)) { throw std::runtime_error("(re-)configuration of VSM (docsum tools) failed due to bad summary config"); } docsum_field_writer_factory.reset(); - - // init keyword extractor - auto kwExtractor = std::make_unique<KeywordExtractor>(); - kwExtractor->addLegalIndexSpec(_highlightindexes.c_str()); - vespalib::string spec = kwExtractor->getLegalIndexSpec(); - LOG(debug, "index highlight spec: '%s'", spec.c_str()); + keyword_extractor_factory.reset(); // create dynamic docsum writer - auto writer = std::make_unique<DynamicDocsumWriter>(std::move(resCfg), std::move(kwExtractor)); + auto writer = std::make_unique<DynamicDocsumWriter>(std::move(resCfg)); docsumTools->set_writer(std::move(writer)); // configure new docsum tools |