diff options
14 files changed, 79 insertions, 56 deletions
diff --git a/searchlib/src/vespa/searchlib/query/CMakeLists.txt b/searchlib/src/vespa/searchlib/query/CMakeLists.txt index 29e9c02e6f2..1c47c910cb4 100644 --- a/searchlib/src/vespa/searchlib/query/CMakeLists.txt +++ b/searchlib/src/vespa/searchlib/query/CMakeLists.txt @@ -4,5 +4,6 @@ vespa_add_library(searchlib_query OBJECT query_term_simple.cpp query_term_ucs4.cpp query_term_decoder.cpp + query_normalization.cpp DEPENDS ) diff --git a/searchlib/src/vespa/searchlib/query/query_normalization.cpp b/searchlib/src/vespa/searchlib/query/query_normalization.cpp new file mode 100644 index 00000000000..e6a9d2202a9 --- /dev/null +++ b/searchlib/src/vespa/searchlib/query/query_normalization.cpp @@ -0,0 +1,31 @@ +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include "query_normalization.h" +#include <ostream> + +namespace search { + +namespace { + +const char * +to_str(search::Normalizing norm) noexcept { + switch (norm) { + case search::Normalizing::NONE: + return "NONE"; + case search::Normalizing::LOWERCASE: + return "LOWERCASE"; + case search::Normalizing::LOWERCASE_AND_FOLD: + return "LOWERCASE_AND_FOLD"; + } + abort(); +} + +} + +std::ostream & +operator<<(std::ostream &os, Normalizing n) { + os << to_str(n); + return os; +} + +} diff --git a/searchlib/src/vespa/searchlib/query/query_normalization.h b/searchlib/src/vespa/searchlib/query/query_normalization.h new file mode 100644 index 00000000000..004876536b4 --- /dev/null +++ b/searchlib/src/vespa/searchlib/query/query_normalization.h @@ -0,0 +1,25 @@ +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#pragma once + +#include <vespa/vespalib/stllike/string.h> +#include <iosfwd> + +namespace search { + +enum class Normalizing { + NONE, + LOWERCASE, + LOWERCASE_AND_FOLD +}; + +std::ostream &operator<<(std::ostream &, Normalizing); + +class QueryNormalization { +public: + using Normalizing = search::Normalizing; + virtual ~QueryNormalization() = default; + virtual bool is_text_matching(vespalib::stringref index) const noexcept = 0; + virtual Normalizing normalizing_mode(vespalib::stringref index) const noexcept = 0; +}; + +} diff --git a/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.cpp b/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.cpp index af8ce7c9994..ccfd187441d 100644 --- a/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.cpp +++ b/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.cpp @@ -4,22 +4,4 @@ namespace search::streaming { -namespace { - -const char* to_str(Normalizing norm) noexcept { - switch (norm) { - case Normalizing::NONE: return "NONE"; - case Normalizing::LOWERCASE: return "LOWERCASE"; - case Normalizing::LOWERCASE_AND_FOLD: return "LOWERCASE_AND_FOLD"; - } - abort(); -} - -} - -std::ostream& operator<<(std::ostream& os, Normalizing n) { - os << to_str(n); - return os; -} - } diff --git a/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.h b/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.h index 83fb27794a3..4097250f67e 100644 --- a/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.h +++ b/searchlib/src/vespa/searchlib/query/streaming/querynoderesultbase.h @@ -1,8 +1,7 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/vespalib/stllike/string.h> -#include <iosfwd> +#include <vespa/searchlib/query/query_normalization.h> #include <memory> namespace search::streaming { @@ -19,14 +18,6 @@ public: virtual QueryNodeResultBase * clone() const = 0; }; -enum class Normalizing { - NONE, - LOWERCASE, - LOWERCASE_AND_FOLD -}; - -std::ostream& operator<<(std::ostream&, Normalizing); - class QueryNodeResultFactory { public: virtual ~QueryNodeResultFactory() = default; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp index 5dcfda64e1e..9be6a2d8d7c 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/dynamicteaserdfw.cpp @@ -48,7 +48,6 @@ DynamicTeaserDFW::insert_juniper_field(uint32_t docid, vespalib::stringref input std::unique_ptr<juniper::Result> result; if (query) { - if (LOG_WOULD_LOG(spam)) { std::ostringstream hexDump; hexDump << vespalib::HexDump(input.data(), input.length()); 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 a1e8fddc3bf..8e75fe858d9 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; @@ -355,7 +355,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 98d0747baec..9ad31b7559c 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); 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); |