diff options
Diffstat (limited to 'streamingvisitors/src/vespa')
4 files changed, 14 insertions, 47 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/querytermdata.h b/streamingvisitors/src/vespa/searchvisitor/querytermdata.h index 36176f70d1d..8c1c3771917 100644 --- a/streamingvisitors/src/vespa/searchvisitor/querytermdata.h +++ b/streamingvisitors/src/vespa/searchvisitor/querytermdata.h @@ -17,26 +17,15 @@ private: search::fef::SimpleTermData _termData; public: QueryTermData * clone() const override { return new QueryTermData(); } - search::fef::SimpleTermData &getTermData() noexcept { return _termData; } -}; - -class SearchMethodInfo { -public: - virtual ~SearchMethodInfo() = default; - virtual bool is_text_matching(vespalib::stringref index) const noexcept = 0; + search::fef::SimpleTermData &getTermData() { return _termData; } }; class QueryTermDataFactory final : public search::streaming::QueryNodeResultFactory { public: - QueryTermDataFactory(const SearchMethodInfo * searchMethodInfo) noexcept : _searchMethodInfo(searchMethodInfo) {} std::unique_ptr<search::streaming::QueryNodeResultBase> create() const override { return std::make_unique<QueryTermData>(); } - bool getRewriteFloatTerms(vespalib::stringref index ) const noexcept override { - return _searchMethodInfo && _searchMethodInfo->is_text_matching(index); - } -private: - const SearchMethodInfo * _searchMethodInfo; + bool getRewriteFloatTerms() const override { return true; } }; diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index bd22ba65816..4d31c71c0a0 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -238,16 +238,14 @@ SearchVisitor::SummaryGenerator::fillSummary(AttributeVector::DocId lid, const H return {}; } -void -SearchVisitor::HitsResultPreparator::execute(vespalib::Identifiable & obj) +void SearchVisitor::HitsResultPreparator::execute(vespalib::Identifiable & obj) { auto & hitsAggr(static_cast<HitsAggregationResult &>(obj)); hitsAggr.setSummaryGenerator(_summaryGenerator); _numHitsAggregators++; } -bool -SearchVisitor::HitsResultPreparator::check(const vespalib::Identifiable & obj) const +bool SearchVisitor::HitsResultPreparator::check(const vespalib::Identifiable & obj) const { return obj.getClass().inherits(HitsAggregationResult::classId); } @@ -261,8 +259,7 @@ SearchVisitor::GroupingEntry::GroupingEntry(Grouping * grouping) : SearchVisitor::GroupingEntry::~GroupingEntry() = default; -void -SearchVisitor::GroupingEntry::aggregate(const document::Document & doc, search::HitRank rank) +void SearchVisitor::GroupingEntry::aggregate(const document::Document & doc, search::HitRank rank) { if (_count < _limit) { _grouping->aggregate(doc, rank); @@ -313,15 +310,7 @@ SearchVisitor::SearchVisitor(StorageComponent& component, LOG(debug, "Created SearchVisitor"); } -bool -SearchVisitor::is_text_matching(vespalib::stringref index) const noexcept { - vsm::FieldIdT fId = _fieldSearchSpecMap.nameIdMap().fieldNo(index); - auto found = _fieldSearchSpecMap.specMap().find(fId); - return (found != _fieldSearchSpecMap.specMap().end()) && found->second.uses_string_search_method(); -} - -void -SearchVisitor::init(const Parameters & params) +void SearchVisitor::init(const Parameters & params) { VISITOR_TRACE(6, "About to lazily init VSM adapter"); _attrMan.add(_documentIdAttributeBacking); @@ -408,12 +397,7 @@ SearchVisitor::init(const Parameters & params) if ( params.lookup("query", queryBlob) ) { LOG(spam, "Received query blob of %zu bytes", queryBlob.size()); VISITOR_TRACE(9, vespalib::make_string("Setting up for query blob of %zu bytes", queryBlob.size())); - - // Create mapping from field name to field id, from field id to search spec, - // and from index name to list of field ids - _fieldSearchSpecMap.buildFromConfig(_env->get_vsm_fields_config()); - - QueryTermDataFactory addOnFactory(this); + QueryTermDataFactory addOnFactory; _query = Query(addOnFactory, vespalib::stringref(queryBlob.data(), queryBlob.size())); _searchBuffer->reserve(0x10000); @@ -430,6 +414,7 @@ SearchVisitor::init(const Parameters & params) StringFieldIdTMap fieldsInQuery; setupFieldSearchers(additionalFields, fieldsInQuery); + setupScratchDocument(fieldsInQuery); _syntheticFieldsController.setup(_fieldSearchSpecMap.nameIdMap(), fieldsInQuery); @@ -769,6 +754,9 @@ void SearchVisitor::setupFieldSearchers(const std::vector<vespalib::string> & additionalFields, StringFieldIdTMap & fieldsInQuery) { + // Create mapping from field name to field id, from field id to search spec, + // and from index name to list of field ids + _fieldSearchSpecMap.buildFromConfig(_env->get_vsm_fields_config()); // Add extra elements to mapping from field name to field id _fieldSearchSpecMap.buildFromConfig(additionalFields); @@ -1157,8 +1145,7 @@ SearchVisitor::fillSortBuffer() return pos; } -void -SearchVisitor::completedBucket(const document::BucketId&, HitCounter&) +void SearchVisitor::completedBucket(const document::BucketId&, HitCounter&) { LOG(debug, "Completed bucket"); } @@ -1170,8 +1157,7 @@ SearchVisitor::generate_query_result(HitCounter& counter) return std::move(_queryResult); } -void -SearchVisitor::completedVisitingInternal(HitCounter& hitCounter) +void SearchVisitor::completedVisitingInternal(HitCounter& hitCounter) { if (!_init_called) { init(_params); diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h index 76b2016e2e2..ef7a41f23a5 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h @@ -8,7 +8,6 @@ #include "rankmanager.h" #include "rankprocessor.h" #include "searchenvironment.h" -#include "querytermdata.h" #include <vespa/vsm/common/docsum.h> #include <vespa/vsm/common/documenttypemapping.h> #include <vespa/vsm/common/storagedocument.h> @@ -43,8 +42,7 @@ class SearchEnvironmentSnapshot; * @brief Visitor that applies a search query to visitor data and * converts them to a QueryResultCommand. **/ -class SearchVisitor : public storage::Visitor, - public SearchMethodInfo { +class SearchVisitor : public storage::Visitor { public: SearchVisitor(storage::StorageComponent&, storage::VisitorEnvironment& vEnv, const vdslib::Parameters & params); @@ -490,7 +488,6 @@ private: vsm::StringFieldIdTMapT _fieldsUnion; void setupAttributeVector(const vsm::FieldPath &fieldPath); - bool is_text_matching(vespalib::stringref index) const noexcept override; }; class SearchVisitorFactory : public storage::VisitorFactory { diff --git a/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.h b/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.h index f7ca07b4dc5..b0154a82dae 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.h +++ b/streamingvisitors/src/vespa/vsm/vsm/fieldsearchspec.h @@ -23,11 +23,6 @@ public: bool valid() const { return static_cast<bool>(_searcher); } size_t maxLength() const { return _maxLength; } bool uses_nearest_neighbor_search_method() const noexcept { return _searchMethod == VsmfieldsConfig::Fieldspec::Searchmethod::NEAREST_NEIGHBOR; } - bool uses_string_search_method() const noexcept { - return (_searchMethod == VsmfieldsConfig::Fieldspec::Searchmethod::UTF8) || - (_searchMethod == VsmfieldsConfig::Fieldspec::Searchmethod::AUTOUTF8) || - (_searchMethod == VsmfieldsConfig::Fieldspec::Searchmethod::SSE2UTF8); - } const vespalib::string& get_arg1() const noexcept { return _arg1; } /** |