diff options
author | Tor Egge <Tor.Egge@online.no> | 2023-01-25 14:57:37 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2023-01-25 14:57:37 +0100 |
commit | e6cc6fd3504640dc2a8768a6e6bcb9791379094e (patch) | |
tree | 60c7490d2e5648acc450f0fb9459983d968d996d /streamingvisitors/src | |
parent | 904dd2bd8e3a19d4552719ca52baa427d511fcde (diff) |
Rename KeywordExtractor to QueryTermFilter.
Diffstat (limited to 'streamingvisitors/src')
-rw-r--r-- | streamingvisitors/src/tests/keyword_extractor_factory/CMakeLists.txt | 9 | ||||
-rw-r--r-- | streamingvisitors/src/tests/keyword_extractor_factory/keyword_extractor_factory_test.cpp | 123 | ||||
-rw-r--r-- | streamingvisitors/src/tests/query_term_filter_factory/CMakeLists.txt | 9 | ||||
-rw-r--r-- | streamingvisitors/src/tests/query_term_filter_factory/query_term_filter_factory_test.cpp | 123 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/vsm/vsm/CMakeLists.txt | 2 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp | 6 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.h | 2 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/vsm/vsm/keyword_extractor_factory.cpp | 80 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/vsm/vsm/query_term_filter_factory.cpp | 80 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/vsm/vsm/query_term_filter_factory.h (renamed from streamingvisitors/src/vespa/vsm/vsm/keyword_extractor_factory.h) | 18 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp | 22 |
11 files changed, 237 insertions, 237 deletions
diff --git a/streamingvisitors/src/tests/keyword_extractor_factory/CMakeLists.txt b/streamingvisitors/src/tests/keyword_extractor_factory/CMakeLists.txt deleted file mode 100644 index 54e2368f200..00000000000 --- a/streamingvisitors/src/tests/keyword_extractor_factory/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(streamingvisitors_keyword_extractor_factory_test_app TEST - SOURCES - keyword_extractor_factory_test.cpp - DEPENDS - streamingvisitors - GTest::GTest -) -vespa_add_test(NAME streamingvisitors_keyword_extractor_factory_test_app COMMAND streamingvisitors_keyword_extractor_factory_test_app) diff --git a/streamingvisitors/src/tests/keyword_extractor_factory/keyword_extractor_factory_test.cpp b/streamingvisitors/src/tests/keyword_extractor_factory/keyword_extractor_factory_test.cpp deleted file mode 100644 index e06217a35f0..00000000000 --- a/streamingvisitors/src/tests/keyword_extractor_factory/keyword_extractor_factory_test.cpp +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include <vespa/searchsummary/docsummary/i_keyword_extractor.h> -#include <vespa/vsm/vsm/keyword_extractor_factory.h> -#include <vespa/vespalib/gtest/gtest.h> - -using search::docsummary::IKeywordExtractor; -using search::docsummary::IKeywordExtractorFactory; -using vespa::config::search::vsm::VsmfieldsConfig; -using vespa::config::search::vsm::VsmfieldsConfigBuilder; -using vespa::config::search::vsm::VsmsummaryConfig; -using vespa::config::search::vsm::VsmsummaryConfigBuilder; -using vsm::KeywordExtractorFactory; - -class KeywordExtractorFactoryTest : public testing::Test { - std::unique_ptr<IKeywordExtractorFactory> _factory; - VsmfieldsConfigBuilder _fields; - VsmsummaryConfigBuilder _summary; -protected: - KeywordExtractorFactoryTest(); - ~KeywordExtractorFactoryTest() override; - - void make_factory() { - _factory = std::make_unique<KeywordExtractorFactory>(_fields, _summary); - } - - bool check_index(const vespalib::string &index_name, const vespalib::string& summary_field) { - if (!_factory) { - make_factory(); - } - auto extractor = _factory->make(summary_field); - return extractor->isLegalIndex(index_name); - } - - void add_summary_field(const vespalib::string& summary_field_name, const std::vector<vespalib::string>& field_names) - { - VsmsummaryConfigBuilder::Fieldmap field_map; - field_map.summary = summary_field_name; - for (auto& field_name : field_names) { - VsmsummaryConfigBuilder::Fieldmap::Document document; - document.field = field_name; - field_map.document.emplace_back(document); - } - _summary.fieldmap.emplace_back(field_map); - _factory.reset(); - } - void add_index(const vespalib::string& index_name, const std::vector<vespalib::string>& field_names) - { - if (_fields.documenttype.empty()) { - _fields.documenttype.resize(1); - _fields.documenttype.back().name = "dummy"; - } - VsmfieldsConfigBuilder::Documenttype::Index index; - index.name = index_name; - for (auto& field_name : field_names) { - VsmfieldsConfigBuilder::Documenttype::Index::Field field; - field.name = field_name; - index.field.emplace_back(field); - } - _fields.documenttype.back().index.emplace_back(index); - _factory.reset(); - } -}; - - -KeywordExtractorFactoryTest::KeywordExtractorFactoryTest() - : testing::Test(), - _factory() -{ -} - -KeywordExtractorFactoryTest::~KeywordExtractorFactoryTest() = default; - -TEST_F(KeywordExtractorFactoryTest, empty_config) -{ - EXPECT_FALSE(check_index("foo", "foo")); -} - -TEST_F(KeywordExtractorFactoryTest, implied_identity_mapping_for_summary_field) -{ - add_index("foo", {"bar"}); - EXPECT_FALSE(check_index("foo", "foo")); - EXPECT_TRUE(check_index("foo", "bar")); -} - -TEST_F(KeywordExtractorFactoryTest, two_source_fields_for_summary_field) -{ - add_index("bar", {"bar"}); - add_index("baz", {"baz"}); - add_summary_field("foo", {"bar", "baz"}); - EXPECT_FALSE(check_index("foo", "foo")); - EXPECT_TRUE(check_index("bar", "foo")); - EXPECT_TRUE(check_index("bar", "bar")); - EXPECT_TRUE(check_index("baz", "foo")); - EXPECT_TRUE(check_index("baz", "baz")); -} - -TEST_F(KeywordExtractorFactoryTest, two_source_fields_for_summary_field_and_multiple_indexes) -{ - add_index("bar", {"bar"}); - add_index("baz", {"baz"}); - add_index("both", {"bar", "baz"}); - add_index("default", {"baz"}); - add_summary_field("foo", {"bar", "baz"}); - EXPECT_FALSE(check_index("foo", "foo")); - EXPECT_TRUE(check_index("both", "foo")); - EXPECT_TRUE(check_index("bar", "foo")); - EXPECT_TRUE(check_index("baz", "foo")); - EXPECT_TRUE(check_index("default", "foo")); - EXPECT_TRUE(check_index("", "foo")); - EXPECT_TRUE(check_index("both", "bar")); - EXPECT_TRUE(check_index("bar", "bar")); - EXPECT_FALSE(check_index("baz", "bar")); - EXPECT_FALSE(check_index("default", "bar")); - EXPECT_FALSE(check_index("", "bar")); - EXPECT_TRUE(check_index("both", "baz")); - EXPECT_FALSE(check_index("bar", "baz")); - EXPECT_TRUE(check_index("baz", "baz")); - EXPECT_TRUE(check_index("default", "baz")); - EXPECT_TRUE(check_index("", "baz")); -} - -GTEST_MAIN_RUN_ALL_TESTS() diff --git a/streamingvisitors/src/tests/query_term_filter_factory/CMakeLists.txt b/streamingvisitors/src/tests/query_term_filter_factory/CMakeLists.txt new file mode 100644 index 00000000000..219602a8c03 --- /dev/null +++ b/streamingvisitors/src/tests/query_term_filter_factory/CMakeLists.txt @@ -0,0 +1,9 @@ +# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(streamingvisitors_query_term_filter_factory_test_app TEST + SOURCES + query_term_filter_factory_test.cpp + DEPENDS + streamingvisitors + GTest::GTest +) +vespa_add_test(NAME streamingvisitors_query_term_filter_factory_test_app COMMAND streamingvisitors_query_term_filter_factory_test_app) diff --git a/streamingvisitors/src/tests/query_term_filter_factory/query_term_filter_factory_test.cpp b/streamingvisitors/src/tests/query_term_filter_factory/query_term_filter_factory_test.cpp new file mode 100644 index 00000000000..54eaa8b0ee1 --- /dev/null +++ b/streamingvisitors/src/tests/query_term_filter_factory/query_term_filter_factory_test.cpp @@ -0,0 +1,123 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/searchsummary/docsummary/i_query_term_filter.h> +#include <vespa/vsm/vsm/query_term_filter_factory.h> +#include <vespa/vespalib/gtest/gtest.h> + +using search::docsummary::IQueryTermFilter; +using search::docsummary::IQueryTermFilterFactory; +using vespa::config::search::vsm::VsmfieldsConfig; +using vespa::config::search::vsm::VsmfieldsConfigBuilder; +using vespa::config::search::vsm::VsmsummaryConfig; +using vespa::config::search::vsm::VsmsummaryConfigBuilder; +using vsm::QueryTermFilterFactory; + +class QueryTermFilterFactoryTest : public testing::Test { + std::unique_ptr<IQueryTermFilterFactory> _factory; + VsmfieldsConfigBuilder _fields; + VsmsummaryConfigBuilder _summary; +protected: + QueryTermFilterFactoryTest(); + ~QueryTermFilterFactoryTest() override; + + void make_factory() { + _factory = std::make_unique<QueryTermFilterFactory>(_fields, _summary); + } + + bool check_view(const vespalib::string& view, const vespalib::string& summary_field) { + if (!_factory) { + make_factory(); + } + auto query_term_filter = _factory->make(summary_field); + return query_term_filter->use_view(view); + } + + void add_summary_field(const vespalib::string& summary_field_name, const std::vector<vespalib::string>& field_names) + { + VsmsummaryConfigBuilder::Fieldmap field_map; + field_map.summary = summary_field_name; + for (auto& field_name : field_names) { + VsmsummaryConfigBuilder::Fieldmap::Document document; + document.field = field_name; + field_map.document.emplace_back(document); + } + _summary.fieldmap.emplace_back(field_map); + _factory.reset(); + } + void add_index(const vespalib::string& index_name, const std::vector<vespalib::string>& field_names) + { + if (_fields.documenttype.empty()) { + _fields.documenttype.resize(1); + _fields.documenttype.back().name = "dummy"; + } + VsmfieldsConfigBuilder::Documenttype::Index index; + index.name = index_name; + for (auto& field_name : field_names) { + VsmfieldsConfigBuilder::Documenttype::Index::Field field; + field.name = field_name; + index.field.emplace_back(field); + } + _fields.documenttype.back().index.emplace_back(index); + _factory.reset(); + } +}; + + +QueryTermFilterFactoryTest::QueryTermFilterFactoryTest() + : testing::Test(), + _factory() +{ +} + +QueryTermFilterFactoryTest::~QueryTermFilterFactoryTest() = default; + +TEST_F(QueryTermFilterFactoryTest, empty_config) +{ + EXPECT_FALSE(check_view("foo", "foo")); +} + +TEST_F(QueryTermFilterFactoryTest, implied_identity_mapping_for_summary_field) +{ + add_index("foo", {"bar"}); + EXPECT_FALSE(check_view("foo", "foo")); + EXPECT_TRUE(check_view("foo", "bar")); +} + +TEST_F(QueryTermFilterFactoryTest, two_source_fields_for_summary_field) +{ + add_index("bar", {"bar"}); + add_index("baz", {"baz"}); + add_summary_field("foo", {"bar", "baz"}); + EXPECT_FALSE(check_view("foo", "foo")); + EXPECT_TRUE(check_view("bar", "foo")); + EXPECT_TRUE(check_view("bar", "bar")); + EXPECT_TRUE(check_view("baz", "foo")); + EXPECT_TRUE(check_view("baz", "baz")); +} + +TEST_F(QueryTermFilterFactoryTest, two_source_fields_for_summary_field_and_multiple_indexes) +{ + add_index("bar", {"bar"}); + add_index("baz", {"baz"}); + add_index("both", {"bar", "baz"}); + add_index("default", {"baz"}); + add_summary_field("foo", {"bar", "baz"}); + EXPECT_FALSE(check_view("foo", "foo")); + EXPECT_TRUE(check_view("both", "foo")); + EXPECT_TRUE(check_view("bar", "foo")); + EXPECT_TRUE(check_view("baz", "foo")); + EXPECT_TRUE(check_view("default", "foo")); + EXPECT_TRUE(check_view("", "foo")); + EXPECT_TRUE(check_view("both", "bar")); + EXPECT_TRUE(check_view("bar", "bar")); + EXPECT_FALSE(check_view("baz", "bar")); + EXPECT_FALSE(check_view("default", "bar")); + EXPECT_FALSE(check_view("", "bar")); + EXPECT_TRUE(check_view("both", "baz")); + EXPECT_FALSE(check_view("bar", "baz")); + EXPECT_TRUE(check_view("baz", "baz")); + EXPECT_TRUE(check_view("default", "baz")); + EXPECT_TRUE(check_view("", "baz")); +} + +GTEST_MAIN_RUN_ALL_TESTS() diff --git a/streamingvisitors/src/vespa/vsm/vsm/CMakeLists.txt b/streamingvisitors/src/vespa/vsm/vsm/CMakeLists.txt index 67acbc1a391..741d2d7a731 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/CMakeLists.txt +++ b/streamingvisitors/src/vespa/vsm/vsm/CMakeLists.txt @@ -6,7 +6,7 @@ vespa_add_library(vsm_vsmbase OBJECT docsum_field_writer_factory.cpp fieldsearchspec.cpp flattendocsumwriter.cpp - keyword_extractor_factory.cpp + query_term_filter_factory.cpp snippetmodifier.cpp vsm-adapter.cpp DEPENDS 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 f3c383a4ba5..36873b713aa 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/docsum_field_writer_factory.cpp @@ -14,7 +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::IQueryTermFilterFactory; using search::docsummary::MatchedElementsFilterDFW; using vespa::config::search::vsm::VsmfieldsConfig; @@ -37,8 +37,8 @@ void populate_fields(MatchingElementsFields& fields, VsmfieldsConfig& fields_con } -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), +DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, const IDocsumEnvironment& env, const IQueryTermFilterFactory& query_term_filter_factory, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config) + : search::docsummary::DocsumFieldWriterFactory(use_v8_geo_positions, env, query_term_filter_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 81acd0c7668..078c466d3d2 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 search::docsummary::IKeywordExtractorFactory& keyword_extractor_factory, const vespa::config::search::vsm::VsmfieldsConfig& vsm_fields_config); + DocsumFieldWriterFactory(bool use_v8_geo_positions, const search::docsummary::IDocsumEnvironment& env, const search::docsummary::IQueryTermFilterFactory& query_term_filter_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/keyword_extractor_factory.cpp b/streamingvisitors/src/vespa/vsm/vsm/keyword_extractor_factory.cpp deleted file mode 100644 index 5319f554c81..00000000000 --- a/streamingvisitors/src/vespa/vsm/vsm/keyword_extractor_factory.cpp +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include "keyword_extractor_factory.h" -#include <vespa/searchsummary/docsummary/keyword_extractor.h> -#include <vespa/vespalib/stllike/hash_map.hpp> -#include <vespa/vespalib/stllike/hash_set.hpp> -#include <cassert> -#include <vespa/log/log.h> -LOG_SETUP(".vsm.keyword_extractor_factory"); - -using search::docsummary::IKeywordExtractor; -using search::docsummary::IKeywordExtractorFactory; -using search::docsummary::KeywordExtractor; -using vespa::config::search::vsm::VsmfieldsConfig; -using vespa::config::search::vsm::VsmsummaryConfig; - -namespace vsm { - -KeywordExtractorFactory::KeywordExtractorFactory(VsmfieldsConfig& vsm_fields_config, - VsmsummaryConfig& vsm_summary_config) - : IKeywordExtractorFactory(), - _index_map(), - _field_map() -{ - populate_index_map(vsm_fields_config); - populate_field_map(vsm_summary_config); -} - -KeywordExtractorFactory::~KeywordExtractorFactory() = default; - -void -KeywordExtractorFactory::populate_index_map(VsmfieldsConfig& vsm_fields_config) -{ - for (auto& doctype : vsm_fields_config.documenttype) { - for (auto& index : doctype.index) { - for (auto& field : index.field) { - _index_map[field.name].insert(index.name); - } - } - } -} - -void -KeywordExtractorFactory::populate_field_map(VsmsummaryConfig& vsm_summary_config) -{ - for (auto& summary_field : vsm_summary_config.fieldmap) { - for (auto& document : summary_field.document) { - _field_map[summary_field.summary].insert(document.field); - } - } -} - -void -KeywordExtractorFactory::populate_indexes(StringSet& indexes, const vespalib::string& field) const -{ - auto itr = _index_map.find(field); - if (itr != _index_map.end()) { - for (auto& index : itr->second) { - indexes.insert(index); - } - } -} - -std::shared_ptr<const IKeywordExtractor> -KeywordExtractorFactory::make(vespalib::stringref input_field) const -{ - StringSet indexes; - auto itr = _field_map.find(input_field); - if (itr != _field_map.end()) { - for (auto& field : itr->second) { - populate_indexes(indexes, field); - } - } else { - // Assume identity mapping vsm summary field -> document field - populate_indexes(indexes, input_field); - } - return std::make_shared<KeywordExtractor>(std::move(indexes)); -} - -} diff --git a/streamingvisitors/src/vespa/vsm/vsm/query_term_filter_factory.cpp b/streamingvisitors/src/vespa/vsm/vsm/query_term_filter_factory.cpp new file mode 100644 index 00000000000..262a557334e --- /dev/null +++ b/streamingvisitors/src/vespa/vsm/vsm/query_term_filter_factory.cpp @@ -0,0 +1,80 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include "query_term_filter_factory.h" +#include <vespa/searchsummary/docsummary/query_term_filter.h> +#include <vespa/vespalib/stllike/hash_map.hpp> +#include <vespa/vespalib/stllike/hash_set.hpp> +#include <cassert> +#include <vespa/log/log.h> +LOG_SETUP(".vsm.query_term_filter_factory"); + +using search::docsummary::IQueryTermFilter; +using search::docsummary::IQueryTermFilterFactory; +using search::docsummary::QueryTermFilter; +using vespa::config::search::vsm::VsmfieldsConfig; +using vespa::config::search::vsm::VsmsummaryConfig; + +namespace vsm { + +QueryTermFilterFactory::QueryTermFilterFactory(VsmfieldsConfig& vsm_fields_config, + VsmsummaryConfig& vsm_summary_config) + : IQueryTermFilterFactory(), + _view_map(), + _field_map() +{ + populate_view_map(vsm_fields_config); + populate_field_map(vsm_summary_config); +} + +QueryTermFilterFactory::~QueryTermFilterFactory() = default; + +void +QueryTermFilterFactory::populate_view_map(VsmfieldsConfig& vsm_fields_config) +{ + for (auto& doctype : vsm_fields_config.documenttype) { + for (auto& index : doctype.index) { + for (auto& field : index.field) { + _view_map[field.name].insert(index.name); + } + } + } +} + +void +QueryTermFilterFactory::populate_field_map(VsmsummaryConfig& vsm_summary_config) +{ + for (auto& summary_field : vsm_summary_config.fieldmap) { + for (auto& document : summary_field.document) { + _field_map[summary_field.summary].insert(document.field); + } + } +} + +void +QueryTermFilterFactory::populate_views(StringSet& views, const vespalib::string& field) const +{ + auto itr = _view_map.find(field); + if (itr != _view_map.end()) { + for (auto& index : itr->second) { + views.insert(index); + } + } +} + +std::shared_ptr<const IQueryTermFilter> +QueryTermFilterFactory::make(vespalib::stringref input_field) const +{ + StringSet views; + auto itr = _field_map.find(input_field); + if (itr != _field_map.end()) { + for (auto& field : itr->second) { + populate_views(views, field); + } + } else { + // Assume identity mapping vsm summary field -> document field + populate_views(views, input_field); + } + return std::make_shared<QueryTermFilter>(std::move(views)); +} + +} diff --git a/streamingvisitors/src/vespa/vsm/vsm/keyword_extractor_factory.h b/streamingvisitors/src/vespa/vsm/vsm/query_term_filter_factory.h index 6ffcbd6f84b..a0f518b90b0 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/keyword_extractor_factory.h +++ b/streamingvisitors/src/vespa/vsm/vsm/query_term_filter_factory.h @@ -2,7 +2,7 @@ #pragma once -#include <vespa/searchsummary/docsummary/i_keyword_extractor_factory.h> +#include <vespa/searchsummary/docsummary/i_query_term_filter_factory.h> #include <vespa/vespalib/stllike/hash_map.h> #include <vespa/vespalib/stllike/hash_set.h> #include <vespa/vsm/config/config-vsmfields.h> @@ -11,12 +11,12 @@ namespace vsm { /* - * Class for creating an instance of IKeywordExtractor for streaming search. + * Class for creating an instance of IQueryTermFilter for streaming search. * * vsm summary fields are treated as document fields by the summary framework * in the searchsummary module, cf. IDocsumStoreDocument. */ -class KeywordExtractorFactory : public search::docsummary::IKeywordExtractorFactory +class QueryTermFilterFactory : public search::docsummary::IQueryTermFilterFactory { public: using VsmfieldsConfig = vespa::config::search::vsm::VsmfieldsConfig; @@ -24,16 +24,16 @@ public: private: using StringSet = vespalib::hash_set<vespalib::string>; using StringSetMap = vespalib::hash_map<vespalib::string, StringSet>; - StringSetMap _index_map; // document field -> indexes + StringSetMap _view_map; // document field -> views StringSetMap _field_map; // vsm summary field -> document fields - void populate_index_map(VsmfieldsConfig& vsm_fields_config); + void populate_view_map(VsmfieldsConfig& vsm_fields_config); void populate_field_map(VsmsummaryConfig& vsm_summary_config); - void populate_indexes(StringSet& indexes, const vespalib::string& field) const; + void populate_views(StringSet& views, const vespalib::string& field) const; public: - KeywordExtractorFactory(VsmfieldsConfig& vsm_fields_config, + QueryTermFilterFactory(VsmfieldsConfig& vsm_fields_config, VsmsummaryConfig& vsm_summary_config); - ~KeywordExtractorFactory() override; - std::shared_ptr<const search::docsummary::IKeywordExtractor> make(vespalib::stringref input_field) const override; + ~QueryTermFilterFactory() override; + std::shared_ptr<const search::docsummary::IQueryTermFilter> make(vespalib::stringref input_field) const override; }; } diff --git a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp index 13442eac1f8..8e5c5cfd8f1 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/vsm-adapter.cpp @@ -4,17 +4,17 @@ #include "docsum_field_writer_factory.h" #include "i_matching_elements_filler.h" #include <vespa/searchlib/common/matching_elements.h> -#include <vespa/searchsummary/docsummary/legacy_keyword_extractor.h> -#include <vespa/searchsummary/docsummary/legacy_keyword_extractor_factory.h> +#include <vespa/searchsummary/docsummary/legacy_query_term_filter.h> +#include <vespa/searchsummary/docsummary/legacy_query_term_filter_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::IQueryTermFilterFactory; using search::docsummary::ResConfigEntry; -using search::docsummary::LegacyKeywordExtractor; -using search::docsummary::LegacyKeywordExtractorFactory; +using search::docsummary::LegacyQueryTermFilter; +using search::docsummary::LegacyQueryTermFilterFactory; using search::MatchingElements; using config::ConfigSnapshot; using vespa::config::search::SummaryConfig; @@ -148,20 +148,20 @@ VSMAdapter::configure(const VSMConfigSnapshot & snapshot) docsumTools->setJuniper(std::move(juniper)); // init keyword extractor - auto kwExtractor = std::make_unique<LegacyKeywordExtractor>(); - kwExtractor->addLegalIndexSpec(_highlightindexes.c_str()); - vespalib::string spec = kwExtractor->getLegalIndexSpec(); + auto query_term_filter = std::make_unique<LegacyQueryTermFilter>(); + query_term_filter->addLegalIndexSpec(_highlightindexes.c_str()); + vespalib::string spec = query_term_filter->getLegalIndexSpec(); LOG(debug, "index highlight spec: '%s'", spec.c_str()); // init result config auto resCfg = std::make_unique<ResultConfig>(); - 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()); + std::unique_ptr<IQueryTermFilterFactory> query_term_filter_factory = std::make_unique<LegacyQueryTermFilterFactory>(std::move(query_term_filter)); + auto docsum_field_writer_factory = std::make_unique<DocsumFieldWriterFactory>(summary.get()->usev8geopositions, *docsumTools, *query_term_filter_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(); - keyword_extractor_factory.reset(); + query_term_filter_factory.reset(); // create dynamic docsum writer auto writer = std::make_unique<DynamicDocsumWriter>(std::move(resCfg)); |