diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2024-02-06 13:05:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-06 13:05:28 +0100 |
commit | 6ddd7ffa0f929ff528c0d81a54830693e62f07c7 (patch) | |
tree | f87cab146098b9469d80d2ad583eef8dcfcd7665 /streamingvisitors | |
parent | fcca2419ded121767da85b563efb7a634533bae1 (diff) | |
parent | 1bb00080f59ad614e63dd32cd2de5a5255626384 (diff) |
Merge pull request #30185 from vespa-engine/balder/symmetric-query-processing-docsum-time
Balder/symmetric query processing docsum time
Diffstat (limited to 'streamingvisitors')
8 files changed, 31 insertions, 33 deletions
diff --git a/streamingvisitors/src/tests/searcher/searcher_test.cpp b/streamingvisitors/src/tests/searcher/searcher_test.cpp index daa26b855e8..ce9636895b4 100644 --- a/streamingvisitors/src/tests/searcher/searcher_test.cpp +++ b/streamingvisitors/src/tests/searcher/searcher_test.cpp @@ -30,7 +30,7 @@ using search::streaming::QueryNodeResultFactory; using search::streaming::FuzzyTerm; using search::streaming::RegexpTerm; using search::streaming::QueryTerm; -using search::streaming::Normalizing; +using search::Normalizing; using Searchmethod = VsmfieldsConfig::Fieldspec::Searchmethod; using search::streaming::QueryTermList; using TermType = QueryTerm::Type; diff --git a/streamingvisitors/src/vespa/searchvisitor/querytermdata.h b/streamingvisitors/src/vespa/searchvisitor/querytermdata.h index 38d0e942fbc..b9b7818b9f2 100644 --- a/streamingvisitors/src/vespa/searchvisitor/querytermdata.h +++ b/streamingvisitors/src/vespa/searchvisitor/querytermdata.h @@ -20,29 +20,22 @@ public: search::fef::SimpleTermData &getTermData() noexcept { return _termData; } }; -class SearchMethodInfo { -public: - using Normalizing = search::streaming::Normalizing; - virtual ~SearchMethodInfo() = default; - virtual bool is_text_matching(vespalib::stringref index) const noexcept = 0; - virtual Normalizing normalizing_mode(vespalib::stringref index) const noexcept = 0; -}; - class QueryTermDataFactory final : public search::streaming::QueryNodeResultFactory { public: - using Normalizing = search::streaming::Normalizing; - QueryTermDataFactory(const SearchMethodInfo * searchMethodInfo) noexcept : _searchMethodInfo(searchMethodInfo) {} + using Normalizing = search::Normalizing; + using QueryNormalization = search::QueryNormalization; + QueryTermDataFactory(const QueryNormalization * normalization) noexcept : _normalization(normalization) {} std::unique_ptr<search::streaming::QueryNodeResultBase> create() const override { return std::make_unique<QueryTermData>(); } Normalizing normalizing_mode(vespalib::stringref index) const noexcept override { - return _searchMethodInfo ? _searchMethodInfo->normalizing_mode(index) : Normalizing::LOWERCASE_AND_FOLD; + return _normalization ? _normalization->normalizing_mode(index) : Normalizing::LOWERCASE_AND_FOLD; } bool allow_float_terms_rewrite(vespalib::stringref index ) const noexcept override { - return _searchMethodInfo && _searchMethodInfo->is_text_matching(index); + return _normalization && _normalization->is_text_matching(index); } private: - const SearchMethodInfo * _searchMethodInfo; + const QueryNormalization * _normalization; }; diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index 8e3a206a3a1..0a4664a4878 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -42,7 +42,7 @@ using search::aggregation::HitsAggregationResult; using search::attribute::IAttributeVector; using search::expression::ConfigureStaticParams; using search::streaming::Query; -using search::streaming::Normalizing; +using search::Normalizing; using search::streaming::QueryTermList; using storage::StorageComponent; using storage::VisitorEnvironment; @@ -174,7 +174,8 @@ SearchVisitor::StreamingDocsumsState::StreamingDocsumsState(search::docsummary:: SearchVisitor::StreamingDocsumsState::~StreamingDocsumsState() = default; -SearchVisitor::SummaryGenerator::SummaryGenerator(const search::IAttributeManager& attr_manager) +SearchVisitor::SummaryGenerator::SummaryGenerator(const search::IAttributeManager& attr_manager, + const search::QueryNormalization & query_normalization) : HitsAggregationResult::SummaryGenerator(), _callback(), _docsum_states(), @@ -185,7 +186,8 @@ SearchVisitor::SummaryGenerator::SummaryGenerator(const search::IAttributeManage _dump_features(), _location(), _stack_dump(), - _attr_manager(attr_manager) + _attr_manager(attr_manager), + _query_normalization(query_normalization) { } @@ -206,6 +208,7 @@ SearchVisitor::SummaryGenerator::get_streaming_docsums_state(const vespalib::str auto &ds = state->get_state(); ds._args.setResultClassName(summary_class); ds._args.set_fields(fields); + ds.query_normalization(&_query_normalization); if (_dump_features.has_value()) { ds._args.dumpFeatures(_dump_features.value()); } @@ -297,7 +300,7 @@ SearchVisitor::SearchVisitor(StorageComponent& component, _summaryClass("default"), _attrMan(), _attrCtx(_attrMan.createContext()), - _summaryGenerator(_attrMan), + _summaryGenerator(_attrMan, *this), _groupingList(), _attributeFields(), _sortList(), @@ -355,7 +358,7 @@ count_normalize_none(const vsm::FieldSearchSpecMapT & specMap, const StringField } -SearchMethodInfo::Normalizing +search::Normalizing SearchVisitor::normalizing_mode(vespalib::stringref index) const noexcept { StringFieldIdTMap fieldIdMap; _fieldSearchSpecMap.addFieldsFromIndex(index, fieldIdMap); diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h index 24816b74d57..945750ef679 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h @@ -44,7 +44,7 @@ class SearchEnvironmentSnapshot; * converts them to a QueryResultCommand. **/ class SearchVisitor : public storage::Visitor, - public SearchMethodInfo { + public search::QueryNormalization { public: SearchVisitor(storage::StorageComponent&, storage::VisitorEnvironment& vEnv, const vdslib::Parameters & params); @@ -413,7 +413,7 @@ private: class SummaryGenerator : public HitsAggregationResult::SummaryGenerator { public: - explicit SummaryGenerator(const search::IAttributeManager& attr_manager); + explicit SummaryGenerator(const search::IAttributeManager&, const search::QueryNormalization &); ~SummaryGenerator() override; vsm::GetDocsumsStateCallback & getDocsumCallback() { return _callback; } void setFilter(std::unique_ptr<vsm::DocsumFilter> filter) { _docsumFilter = std::move(filter); } @@ -436,6 +436,7 @@ private: std::optional<vespalib::string> _location; std::optional<std::vector<char>> _stack_dump; const search::IAttributeManager& _attr_manager; + const search::QueryNormalization & _query_normalization; }; class HitsResultPreparator : public vespalib::ObjectOperation, public vespalib::ObjectPredicate @@ -477,8 +478,8 @@ private: std::vector<size_t> _sortList; vsm::SharedSearcherBuf _searchBuffer; std::vector<char> _tmpSortBuffer; - search::AttributeVector::SP _documentIdAttributeBacking; - search::AttributeVector::SP _rankAttributeBacking; + search::AttributeVector::SP _documentIdAttributeBacking; + search::AttributeVector::SP _rankAttributeBacking; search::SingleStringExtAttribute & _documentIdAttribute; search::SingleFloatExtAttribute & _rankAttribute; bool _shouldFillRankAttribute; diff --git a/streamingvisitors/src/vespa/vsm/searcher/fieldsearcher.h b/streamingvisitors/src/vespa/vsm/searcher/fieldsearcher.h index 2af68c553b8..6f3ec3e1e73 100644 --- a/streamingvisitors/src/vespa/vsm/searcher/fieldsearcher.h +++ b/streamingvisitors/src/vespa/vsm/searcher/fieldsearcher.h @@ -22,20 +22,21 @@ using SharedSearcherBuf = std::shared_ptr<SearcherBuf>; class FieldSearcherBase { +public: + FieldSearcherBase & operator = (const FieldSearcherBase & org) = delete; protected: FieldSearcherBase() noexcept; FieldSearcherBase(const FieldSearcherBase & org); virtual ~FieldSearcherBase(); - FieldSearcherBase & operator = (const FieldSearcherBase & org) = delete; void prepare(const search::streaming::QueryTermList & qtl); -protected: + search::streaming::QueryTermList _qtl; }; class FieldSearcher : public FieldSearcherBase { public: - using Normalizing = search::streaming::Normalizing; + using Normalizing = search::Normalizing; enum MatchType { REGULAR, PREFIX, diff --git a/streamingvisitors/src/vespa/vsm/searcher/tokenizereader.h b/streamingvisitors/src/vespa/vsm/searcher/tokenizereader.h index f10c8910e82..2bb5e62e0aa 100644 --- a/streamingvisitors/src/vespa/vsm/searcher/tokenizereader.h +++ b/streamingvisitors/src/vespa/vsm/searcher/tokenizereader.h @@ -14,7 +14,7 @@ namespace vsm { class TokenizeReader { public: using byte = search::byte; - using Normalizing = search::streaming::Normalizing; + using Normalizing = search::Normalizing; TokenizeReader(const byte *p, uint32_t len, ucs4_t *q) noexcept : _p(p), _p_end(p + len), diff --git a/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.cpp b/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.cpp index 63d2007cecf..3ae4794e33f 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.cpp @@ -263,14 +263,14 @@ buildFieldSet(const VsmfieldsConfig::Documenttype::Index & ci, const FieldSearch return ifm; } -search::streaming::Normalizing +search::Normalizing normalize_mode(VsmfieldsConfig::Fieldspec::Normalize normalize_mode) { switch (normalize_mode) { - case VsmfieldsConfig::Fieldspec::Normalize::NONE: return search::streaming::Normalizing::NONE; - case VsmfieldsConfig::Fieldspec::Normalize::LOWERCASE: return search::streaming::Normalizing::LOWERCASE; - case VsmfieldsConfig::Fieldspec::Normalize::LOWERCASE_AND_FOLD: return search::streaming::Normalizing::LOWERCASE_AND_FOLD; + case VsmfieldsConfig::Fieldspec::Normalize::NONE: return search::Normalizing::NONE; + case VsmfieldsConfig::Fieldspec::Normalize::LOWERCASE: return search::Normalizing::LOWERCASE; + case VsmfieldsConfig::Fieldspec::Normalize::LOWERCASE_AND_FOLD: return search::Normalizing::LOWERCASE_AND_FOLD; } - return search::streaming::Normalizing::LOWERCASE_AND_FOLD; + return search::Normalizing::LOWERCASE_AND_FOLD; } } diff --git a/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.h b/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.h index c862753a41c..e90aea1371b 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.h +++ b/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.h @@ -11,7 +11,7 @@ class FieldSearchSpec { public: using Searchmethod = VsmfieldsConfig::Fieldspec::Searchmethod; - using Normalizing = search::streaming::Normalizing; + using Normalizing = search::Normalizing; FieldSearchSpec(); FieldSearchSpec(const FieldIdT & id, const vespalib::string & name, Searchmethod searchMethod, Normalizing normalize_mode, vespalib::stringref arg1, size_t maxLength); |