summaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-02-06 13:05:28 +0100
committerGitHub <noreply@github.com>2024-02-06 13:05:28 +0100
commit6ddd7ffa0f929ff528c0d81a54830693e62f07c7 (patch)
treef87cab146098b9469d80d2ad583eef8dcfcd7665 /streamingvisitors
parentfcca2419ded121767da85b563efb7a634533bae1 (diff)
parent1bb00080f59ad614e63dd32cd2de5a5255626384 (diff)
Merge pull request #30185 from vespa-engine/balder/symmetric-query-processing-docsum-time
Balder/symmetric query processing docsum time
Diffstat (limited to 'streamingvisitors')
-rw-r--r--streamingvisitors/src/tests/searcher/searcher_test.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/querytermdata.h19
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp13
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.h9
-rw-r--r--streamingvisitors/src/vespa/vsm/searcher/fieldsearcher.h7
-rw-r--r--streamingvisitors/src/vespa/vsm/searcher/tokenizereader.h2
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.cpp10
-rw-r--r--streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.h2
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);