summaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-01-05 15:54:29 +0100
committerTor Egge <Tor.Egge@online.no>2023-01-05 15:54:29 +0100
commite529812763b6c4efe2b8dbd9b4b87f581d7bec7a (patch)
tree61322da69619c961200770437c6f39cec9afdf32 /streamingvisitors
parent6cbf34743397d5039dcff4c19893401cfd471cd1 (diff)
Add interface class IKeywordExtractorFactory.
Move ownership of IKeywordExtractor to JuniperDFW.
Diffstat (limited to 'streamingvisitors')
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp5
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h2
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp21
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