diff options
author | Tor Egge <Tor.Egge@online.no> | 2023-01-05 14:06:36 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2023-01-05 14:06:36 +0100 |
commit | cb652bc935fd698aa7c34129fecc48853051eed3 (patch) | |
tree | 801f177238a5d9f8b12571b741fd72081b078ba0 /searchsummary | |
parent | 11d6ee9c512a530800a9e1bf2f50b70c19833ea5 (diff) |
Add interface class IKeywordExtractor.
Diffstat (limited to 'searchsummary')
9 files changed, 39 insertions, 18 deletions
diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp index a44d56e894d..3240dd43c00 100644 --- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp +++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp @@ -15,7 +15,7 @@ #include <vespa/searchsummary/docsummary/docsum_store_document.h> #include <vespa/searchsummary/docsummary/docsumstate.h> #include <vespa/searchsummary/docsummary/docsumwriter.h> -#include <vespa/searchsummary/docsummary/keywordextractor.h> +#include <vespa/searchsummary/docsummary/i_keyword_extractor.h> #include <vespa/vespalib/data/slime/slime.h> #include <vespa/vespalib/data/smart_buffer.h> #include <vespa/vespalib/gtest/gtest.h> @@ -117,7 +117,7 @@ SlimeSummaryTest::SlimeSummaryTest() EXPECT_TRUE(cfg->addConfigEntry("longdata_field")); EXPECT_TRUE(cfg->addConfigEntry("int_pair_field")); config->set_default_result_class_id(0); - writer = std::make_unique<DynamicDocsumWriter>(std::move(config), std::unique_ptr<KeywordExtractor>()); + writer = std::make_unique<DynamicDocsumWriter>(std::move(config), std::unique_ptr<IKeywordExtractor>()); int_pair_type.addField(Field("foo", *DataType::INT)); int_pair_type.addField(Field("bar", *DataType::INT)); doc_type.addField(Field("int_field", *DataType::INT)); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h index 86cc94d69bc..a228f93e1d4 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h @@ -26,7 +26,7 @@ namespace search::docsummary { class GetDocsumsState; class IDocsumEnvironment; -class KeywordExtractor; +class IKeywordExtractor; class DocsumFieldWriterState; class GetDocsumsStateCallback @@ -52,7 +52,7 @@ public: GetDocsumArgs _args; // from getdocsums request std::vector<uint32_t> _docsumbuf; // from getdocsums request - KeywordExtractor *_kwExtractor; + IKeywordExtractor *_kwExtractor; GetDocsumsStateCallback &_callback; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp index 88e6951f3b2..8e12f0c875b 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.cpp @@ -86,7 +86,7 @@ DynamicDocsumWriter::insertDocsum(const ResolveClassInfo & rci, uint32_t docid, } } -DynamicDocsumWriter::DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<KeywordExtractor> extractor) +DynamicDocsumWriter::DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<IKeywordExtractor> extractor) : _resultConfig(std::move(config)), _keywordExtractor(std::move(extractor)) { diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h index 20d132c150f..65a1d923851 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumwriter.h @@ -17,7 +17,7 @@ namespace vespalib { class Slime; } namespace search::docsummary { -class KeywordExtractor; +class IKeywordExtractor; static constexpr uint32_t SLIME_MAGIC_ID = 0x55555555; @@ -51,10 +51,10 @@ class DynamicDocsumWriter : public IDocsumWriter { private: std::unique_ptr<ResultConfig> _resultConfig; - std::unique_ptr<KeywordExtractor> _keywordExtractor; + std::unique_ptr<IKeywordExtractor> _keywordExtractor; public: - DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<KeywordExtractor> extractor); + DynamicDocsumWriter(std::unique_ptr<ResultConfig> config, std::unique_ptr<IKeywordExtractor> extractor); DynamicDocsumWriter(const DynamicDocsumWriter &) = delete; DynamicDocsumWriter& operator=(const DynamicDocsumWriter &) = delete; ~DynamicDocsumWriter() override; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/i_keyword_extractor.h b/searchsummary/src/vespa/searchsummary/docsummary/i_keyword_extractor.h new file mode 100644 index 00000000000..f9f2db871f9 --- /dev/null +++ b/searchsummary/src/vespa/searchsummary/docsummary/i_keyword_extractor.h @@ -0,0 +1,21 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#pragma once + +#include <vespa/vespalib/stllike/string.h> + +namespace search::docsummary { + +/* + * Interface class for checking if query term index name indicates that + * related query term is useful from the perspective of juniper. + */ +class IKeywordExtractor +{ +public: + virtual ~IKeywordExtractor() = default; + + virtual bool isLegalIndex(vespalib::stringref idx) const = 0; +}; + +} diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.cpp b/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.cpp index 455027a1234..d63c9359aec 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.cpp @@ -1,16 +1,16 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "juniper_query_adapter.h" +#include "i_keyword_extractor.h" #include "juniper_dfw_query_item.h" #include "juniper_dfw_term_visitor.h" -#include "keywordextractor.h" #include <vespa/searchlib/fef/properties.h> #include <vespa/searchlib/parsequery/stackdumpiterator.h> #include <vespa/searchlib/queryeval/split_float.h> namespace search::docsummary { -JuniperQueryAdapter::JuniperQueryAdapter(KeywordExtractor *kwExtractor, vespalib::stringref buf, +JuniperQueryAdapter::JuniperQueryAdapter(IKeywordExtractor *kwExtractor, vespalib::stringref buf, const search::fef::Properties *highlightTerms) : _kwExtractor(kwExtractor), _buf(buf), diff --git a/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.h b/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.h index ac6fe0d7c32..7c975c6120d 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/juniper_query_adapter.h @@ -10,7 +10,7 @@ namespace search::fef { class Properties; } namespace search::docsummary { -class KeywordExtractor; +class IKeywordExtractor; /* * Class implementing an adapter used by juniper to examine the current @@ -19,14 +19,14 @@ class KeywordExtractor; class JuniperQueryAdapter : public juniper::IQuery { private: - KeywordExtractor *_kwExtractor; + IKeywordExtractor *_kwExtractor; const vespalib::stringref _buf; const search::fef::Properties *_highlightTerms; public: JuniperQueryAdapter(const JuniperQueryAdapter&) = delete; JuniperQueryAdapter operator= (const JuniperQueryAdapter&) = delete; - JuniperQueryAdapter(KeywordExtractor *kwExtractor, vespalib::stringref buf, + JuniperQueryAdapter(IKeywordExtractor *kwExtractor, vespalib::stringref buf, const search::fef::Properties *highlightTerms = nullptr); ~JuniperQueryAdapter() override; bool skipItem(search::SimpleQueryStackDumpIterator *iterator) const; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp index 9eab825d049..8b9f6dc38a9 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.cpp @@ -18,7 +18,8 @@ bool useful(search::ParseItem::ItemCreator creator) KeywordExtractor::KeywordExtractor() - : _legalPrefixes(), + : IKeywordExtractor(), + _legalPrefixes(), _legalIndexes() { } diff --git a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h index fbc16550542..6899d84091b 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/keywordextractor.h @@ -2,13 +2,12 @@ #pragma once +#include "i_keyword_extractor.h" #include <vespa/vespalib/stllike/hash_set.h> namespace search::docsummary { -class IDocsumEnvironment; - -class KeywordExtractor +class KeywordExtractor : public IKeywordExtractor { public: @@ -79,7 +78,7 @@ public: * * @return true if the given index name is legal. **/ - bool isLegalIndex(vespalib::stringref idx) const; + bool isLegalIndex(vespalib::stringref idx) const override; }; } |