diff options
author | Arne H Juul <arnej27959@users.noreply.github.com> | 2017-04-24 12:10:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-24 12:10:42 +0200 |
commit | 9ff4bdb407ed8d855a3f86a17c99906ff738177b (patch) | |
tree | fc2b050224d7dde92d57e1f9cac12c1e5aaf6b90 /searchlib | |
parent | 32ae190acc9ac5081049e1c7008d1602c68cf821 (diff) |
Revert "Balder/enforce override 2"
Diffstat (limited to 'searchlib')
52 files changed, 861 insertions, 414 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/createarraystd.cpp b/searchlib/src/vespa/searchlib/attribute/createarraystd.cpp index a9b2a50cac3..29ea819f71d 100644 --- a/searchlib/src/vespa/searchlib/attribute/createarraystd.cpp +++ b/searchlib/src/vespa/searchlib/attribute/createarraystd.cpp @@ -2,10 +2,14 @@ #include "attributefactory.h" #include "defines.h" + #include "attributevector.hpp" #include "multivalueattribute.hpp" #include "multinumericattribute.hpp" -#include "multistringattribute.hpp" +#include "multistringattribute.h" + +#include <vespa/log/log.h> +LOG_SETUP(".createarraystd"); namespace search { diff --git a/searchlib/src/vespa/searchlib/attribute/createsetstd.cpp b/searchlib/src/vespa/searchlib/attribute/createsetstd.cpp index 262ec2c23df..5aa40a20d14 100644 --- a/searchlib/src/vespa/searchlib/attribute/createsetstd.cpp +++ b/searchlib/src/vespa/searchlib/attribute/createsetstd.cpp @@ -1,11 +1,16 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include "attributefactory.h" +#include <vespa/fastos/fastos.h> +#include <vespa/searchlib/attribute/attributefactory.h> #include "defines.h" -#include "attributevector.hpp" -#include "multivalueattribute.hpp" -#include "multinumericattribute.hpp" -#include "multistringattribute.hpp" + +#include <vespa/log/log.h> +LOG_SETUP(".createsetstd"); + +#include <vespa/searchlib/attribute/attributevector.hpp> +#include <vespa/searchlib/attribute/multivalueattribute.hpp> +#include <vespa/searchlib/attribute/multinumericattribute.hpp> +#include <vespa/searchlib/attribute/multistringattribute.h> namespace search { diff --git a/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp b/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp index ad08e20808a..02890eb8789 100644 --- a/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp +++ b/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp @@ -1,16 +1,21 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include "attributefactory.h" -#include "integerbase.h" -#include "floatbase.h" +#include <vespa/fastos/fastos.h> +#include <vespa/searchlib/attribute/attributefactory.h> +#include <vespa/searchlib/attribute/integerbase.h> +#include <vespa/searchlib/attribute/floatbase.h> #include "defines.h" -#include "singlestringattribute.h" -#include "singlestringpostattribute.hpp" -#include "singlenumericenumattribute.hpp" -#include "singlenumericpostattribute.hpp" -#include "enumstore.hpp" -#include "enumattribute.hpp" -#include "singleenumattribute.hpp" + +#include <vespa/log/log.h> +LOG_SETUP(".createsinglefastsearch"); + +#include <vespa/searchlib/attribute/singlestringattribute.h> +#include <vespa/searchlib/attribute/singlestringpostattribute.hpp> +#include <vespa/searchlib/attribute/singlenumericenumattribute.hpp> +#include <vespa/searchlib/attribute/singlenumericpostattribute.hpp> +#include <vespa/searchlib/attribute/enumstore.hpp> +#include <vespa/searchlib/attribute/enumattribute.hpp> +#include <vespa/searchlib/attribute/singleenumattribute.hpp> #define INTPOSTING(T) SingleValueNumericPostingAttribute< ENUM_ATTRIBUTE(IntegerAttributeTemplate<T>) > #define FLOATPOSTING(T) SingleValueNumericPostingAttribute< ENUM_ATTRIBUTE(FloatingPointAttributeTemplate<T>) > diff --git a/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp b/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp index c3a126631e6..766195c8e9c 100644 --- a/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp +++ b/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp @@ -1,12 +1,17 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include "attributefactory.h" +#include <vespa/fastos/fastos.h> +#include <vespa/searchlib/attribute/attributefactory.h> + +#include <vespa/log/log.h> +LOG_SETUP(".createsinglestd"); + #include "predicate_attribute.h" #include "singlesmallnumericattribute.h" #include "reference_attribute.h" -#include "attributevector.hpp" -#include "singlenumericattribute.hpp" -#include "singlestringattribute.h" +#include <vespa/searchlib/attribute/attributevector.hpp> +#include <vespa/searchlib/attribute/singlenumericattribute.hpp> +#include <vespa/searchlib/attribute/singlestringattribute.h> #include <vespa/searchlib/tensor/generic_tensor_attribute.h> #include <vespa/searchlib/tensor/dense_tensor_attribute.h> diff --git a/searchlib/src/vespa/searchlib/attribute/enumattribute.h b/searchlib/src/vespa/searchlib/attribute/enumattribute.h index ca5058c71d3..94e5da62967 100644 --- a/searchlib/src/vespa/searchlib/attribute/enumattribute.h +++ b/searchlib/src/vespa/searchlib/attribute/enumattribute.h @@ -2,9 +2,9 @@ #pragma once +#include <vespa/searchlib/attribute/enumstore.h> #include "attributevector.h" #include "loadedenumvalue.h" -#include <vespa/searchlib/attribute/enumstore.h> #include <set> namespace search { @@ -61,10 +61,18 @@ protected: virtual EnumType getFromEnum(EnumHandle e) const { return _enumStore.getValue(e); } virtual void fillPostings(LoadedVector & loaded) { (void) loaded; } - void fillEnum(LoadedVector & loaded) override; - void fillEnum0(const void *src, size_t srcLen, EnumIndexVector &eidxs) override; - void fixupEnumRefCounts(const EnumVector &enumHist) override; - uint64_t getUniqueValueCount(void) const override; + virtual void fillEnum(LoadedVector & loaded) override; + + virtual void + fillEnum0(const void *src, + size_t srcLen, + EnumIndexVector &eidxs) override; + + virtual void + fixupEnumRefCounts(const EnumVector &enumHist) override; + + virtual uint64_t + getUniqueValueCount(void) const override; static EnumType getDefaultEnumTypeValue() { return B::defaultValue(); } @@ -82,8 +90,9 @@ public: EnumAttribute(const vespalib::string & baseFileName, const AttributeVector::Config & cfg); - ~EnumAttribute(); + virtual ~EnumAttribute(); virtual bool findEnum(EnumType v, EnumHandle & e) const { return _enumStore.findEnum(v, e); } }; } // namespace search + diff --git a/searchlib/src/vespa/searchlib/attribute/flagattribute.h b/searchlib/src/vespa/searchlib/attribute/flagattribute.h index 3fe2424b97d..ea73ecb7c51 100644 --- a/searchlib/src/vespa/searchlib/attribute/flagattribute.h +++ b/searchlib/src/vespa/searchlib/attribute/flagattribute.h @@ -40,7 +40,8 @@ public: void setNewBVValue(DocId doc, typename B::WType::ValueType value); private: - bool onAddDoc(DocId doc) override; + virtual bool onAddDoc(DocId doc) override; + void onAddDocs(DocId docIdLimit) override; void ensureGuardBit(BitVector & bv); void ensureGuardBit(); diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.h b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.h index 01d9efe0cbc..6afede8d3b4 100644 --- a/searchlib/src/vespa/searchlib/attribute/multinumericattribute.h +++ b/searchlib/src/vespa/searchlib/attribute/multinumericattribute.h @@ -256,3 +256,4 @@ public: }; } + diff --git a/searchlib/src/vespa/searchlib/attribute/multistringattribute.cpp b/searchlib/src/vespa/searchlib/attribute/multistringattribute.cpp index 79a2d2001b6..737f464206e 100644 --- a/searchlib/src/vespa/searchlib/attribute/multistringattribute.cpp +++ b/searchlib/src/vespa/searchlib/attribute/multistringattribute.cpp @@ -1,8 +1,11 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/fastos/fastos.h> #include "multistringattribute.h" -#include <vespa/searchlib/query/queryterm.h> +#include "multistringattribute.hpp" +#include <vespa/log/log.h> +LOG_SETUP(".searchlib.attribute.multistringattribute"); namespace search { template class MultiValueStringAttributeT<EnumAttribute<StringAttribute>, multivalue::Value<EnumStoreBase::Index> >; diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h index e02a81e44ef..12b1098bbb3 100644 --- a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h +++ b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h @@ -3,6 +3,7 @@ #pragma once #include "multi_value_mapping.h" +#include <vespa/vespalib/stllike/string.h> #include "attributevector.h" namespace search { @@ -47,7 +48,7 @@ protected: * Can be overridden by subclasses that need to resize structures as a result of this. * Should return true if underlying structures were resized. **/ - bool onAddDoc(DocId doc) override { (void) doc; return false; } + virtual bool onAddDoc(DocId doc) override { (void) doc; return false; } AddressSpace getMultiValueAddressSpaceUsage() const override; @@ -73,3 +74,4 @@ public: }; } // namespace search + diff --git a/searchlib/src/vespa/searchlib/attribute/numericbase.h b/searchlib/src/vespa/searchlib/attribute/numericbase.h index ee6effa810a..94bc5c1472d 100644 --- a/searchlib/src/vespa/searchlib/attribute/numericbase.h +++ b/searchlib/src/vespa/searchlib/attribute/numericbase.h @@ -3,9 +3,9 @@ #pragma once #include "attributevector.h" -#include "enumstorebase.h" -#include "loadedenumvalue.h" #include <vespa/searchlib/common/sort.h> +#include <vespa/searchlib/attribute/enumstorebase.h> +#include "loadedenumvalue.h" namespace search { @@ -28,7 +28,6 @@ protected: virtual void fillEnumIdx(ReaderBase &attrReader, const EnumIndexVector &eidxs, EnumVector &enumHist); virtual void fillPostingsFixupEnum(const attribute::LoadedEnumAttributeVector &loaded); virtual void fixupEnumRefCounts(const EnumVector &enumHist); - bool onAddDoc(DocId) override { return true; } template<typename T> class Equal @@ -58,7 +57,8 @@ protected: protected: Range(const QueryTermSimple & queryTerm, bool avoidUndefinedInRange=false); Int64Range getRange() const { - return Int64Range(static_cast<int64_t>(_low), static_cast<int64_t>(_high)); + return Int64Range(static_cast<int64_t>(_low), + static_cast<int64_t>(_high)); } bool isValid() const { return _valid; } bool match(T v) const { return (_low <= v) && (v <= _high); } @@ -75,7 +75,8 @@ protected: BaseType numMin = std::numeric_limits<BaseType>::min(); BaseType numMax = std::numeric_limits<BaseType>::max(); - if (isFloat) { + if (isFloat) + { if (_low <= (-numMax)) { low = -numMax; } @@ -101,3 +102,4 @@ public: }; } // namespace search + diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.h b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.h index a835aa85896..1843bde4d54 100644 --- a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.h +++ b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.h @@ -2,7 +2,7 @@ #pragma once -#include "enumattribute.h" +#include <vespa/searchlib/attribute/enumattribute.h> #include <vespa/searchlib/common/rcuvector.h> namespace search { @@ -83,8 +83,7 @@ protected: } virtual void mergeMemoryStats(MemoryUsage & total) { (void) total; } - - void fillValues(LoadedVector & loaded) override; + virtual void fillValues(LoadedVector & loaded) override; void fillEnumIdx(ReaderBase &attrReader, const EnumStoreBase::IndexVector &eidxs, @@ -102,7 +101,7 @@ protected: * * Should return true if underlying structures were resized. **/ - bool onAddDoc(DocId doc) override; + virtual bool onAddDoc(DocId doc) override; public: SingleValueEnumAttribute(const vespalib::string & baseFileName, const AttributeVector::Config & cfg); @@ -137,3 +136,4 @@ public: }; } // namespace search + diff --git a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp index 4b19f8d1af0..c798351211a 100644 --- a/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/singleenumattribute.hpp @@ -2,8 +2,8 @@ #pragma once -#include "singleenumattribute.h" -#include "enumattribute.hpp" +#include <vespa/searchlib/attribute/singleenumattribute.h> +#include <vespa/searchlib/attribute/enumattribute.hpp> #include "ipostinglistattributebase.h" #include "singleenumattributesaver.h" #include "load_utils.h" diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.h b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.h index 369fbf77f0b..828c1434819 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.h +++ b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.h @@ -46,9 +46,9 @@ private: protected: // from SingleValueEnumAttribute - void considerUpdateAttributeChange(const Change & c) override; - void considerArithmeticAttributeChange(const Change & c, UniqueSet & newUniques) override; - void applyArithmeticValueChange(const Change & c, EnumStoreBase::IndexVector & unused) override; + virtual void considerUpdateAttributeChange(const Change & c); + virtual void considerArithmeticAttributeChange(const Change & c, UniqueSet & newUniques); + virtual void applyArithmeticValueChange(const Change & c, EnumStoreBase::IndexVector & unused); /* * Specialization of SearchContext @@ -92,10 +92,9 @@ public: const AttributeVector::Config & c = AttributeVector::Config(AttributeVector::BasicType::fromType(T()), attribute::CollectionType::SINGLE)); - ~SingleValueNumericEnumAttribute(); - void onCommit() override; - bool onLoad() override; + virtual void onCommit(); + virtual bool onLoad(); bool onLoadEnumerated(ReaderBase &attrReader); @@ -105,46 +104,46 @@ public: //------------------------------------------------------------------------- // Attribute read API //------------------------------------------------------------------------- - T get(DocId doc) const override { + virtual T get(DocId doc) const { return this->_enumStore.getValue(this->_enumIndices[doc]); } - largeint_t getInt(DocId doc) const override { + virtual largeint_t getInt(DocId doc) const { return static_cast<largeint_t>(get(doc)); } - double getFloat(DocId doc) const override { + virtual double getFloat(DocId doc) const { return static_cast<double>(get(doc)); } - uint32_t getAll(DocId doc, T * v, uint32_t sz) const override { + virtual uint32_t getAll(DocId doc, T * v, uint32_t sz) const { if (sz > 0) { v[0] = get(doc); } return 1; } - uint32_t get(DocId doc, largeint_t * v, uint32_t sz) const override { + virtual uint32_t get(DocId doc, largeint_t * v, uint32_t sz) const { if (sz > 0) { v[0] = getInt(doc); } return 1; } - uint32_t get(DocId doc, double * v, uint32_t sz) const override { + virtual uint32_t get(DocId doc, double * v, uint32_t sz) const { if (sz > 0) { v[0] = getFloat(doc); } return 1; } - uint32_t getAll(DocId doc, Weighted * v, uint32_t sz) const override { + virtual uint32_t getAll(DocId doc, Weighted * v, uint32_t sz) const { if (sz > 0) { v[0] = Weighted(get(doc)); } return 1; } - uint32_t get(DocId doc, WeightedInt * v, uint32_t sz) const override { + virtual uint32_t get(DocId doc, WeightedInt * v, uint32_t sz) const { if (sz > 0) { v[0] = WeightedInt(getInt(doc)); } return 1; } - uint32_t get(DocId doc, WeightedFloat * v, uint32_t sz) const override { + virtual uint32_t get(DocId doc, WeightedFloat * v, uint32_t sz) const { if (sz > 0) { v[0] = WeightedFloat(getFloat(doc)); } diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp index 698bdbf82d4..fbf56440a08 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/singlenumericenumattribute.hpp @@ -64,9 +64,6 @@ SingleValueNumericEnumAttribute(const vespalib::string & baseFileName, } template <typename B> -SingleValueNumericEnumAttribute<B>::~SingleValueNumericEnumAttribute() {} - -template <typename B> void SingleValueNumericEnumAttribute<B>::onCommit() { diff --git a/searchlib/src/vespa/searchlib/features/dotproductfeature.h b/searchlib/src/vespa/searchlib/features/dotproductfeature.h index b94d1717ed1..4a30c0ecb1b 100644 --- a/searchlib/src/vespa/searchlib/features/dotproductfeature.h +++ b/searchlib/src/vespa/searchlib/features/dotproductfeature.h @@ -156,8 +156,8 @@ public: protected: const A * _attribute; private: - size_t getAttributeValues(uint32_t docid, const AT * & count) override; - public: + virtual size_t getAttributeValues(uint32_t docid, const AT * & count) override; +public: DotProductExecutor(const A * attribute, const V & queryVector); ~DotProductExecutor(); }; diff --git a/searchlib/src/vespa/searchlib/features/raw_score_feature.h b/searchlib/src/vespa/searchlib/features/raw_score_feature.h index 2e37c43c8f7..ddae8848052 100644 --- a/searchlib/src/vespa/searchlib/features/raw_score_feature.h +++ b/searchlib/src/vespa/searchlib/features/raw_score_feature.h @@ -8,37 +8,39 @@ namespace search { namespace features { -class RawScoreExecutor : public fef::FeatureExecutor +class RawScoreExecutor : public search::fef::FeatureExecutor { private: - std::vector<fef::TermFieldHandle> _handles; + std::vector<search::fef::TermFieldHandle> _handles; const fef::MatchData *_md; - void handle_bind_match_data(fef::MatchData &md) override; + virtual void handle_bind_match_data(fef::MatchData &md) override; public: - RawScoreExecutor(const fef::IQueryEnvironment &env, uint32_t fieldId); - void execute(uint32_t docId) override; + RawScoreExecutor(const search::fef::IQueryEnvironment &env, uint32_t fieldId); + virtual void execute(uint32_t docId) override; }; //----------------------------------------------------------------------------- -class RawScoreBlueprint : public fef::Blueprint +class RawScoreBlueprint : public search::fef::Blueprint { private: - const fef::FieldInfo *_field; + const search::fef::FieldInfo *_field; public: RawScoreBlueprint() : Blueprint("rawScore"), _field(0) {} - void visitDumpFeatures(const fef::IIndexEnvironment &, - fef::IDumpFeatureVisitor &) const override {} - fef::Blueprint::UP createInstance() const override { + virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &, + search::fef::IDumpFeatureVisitor &) const override {} + virtual search::fef::Blueprint::UP createInstance() const override { return Blueprint::UP(new RawScoreBlueprint()); } - fef::ParameterDescriptions getDescriptions() const override { - return fef::ParameterDescriptions().desc().field(); + virtual search::fef::ParameterDescriptions getDescriptions() const override { + return search::fef::ParameterDescriptions().desc().field(); } - bool setup(const fef::IIndexEnvironment &env, const fef::ParameterList ¶ms) override; - fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + virtual bool setup(const search::fef::IIndexEnvironment &env, + const search::fef::ParameterList ¶ms) override; + virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; } // namespace features } // namespace search + diff --git a/searchlib/src/vespa/searchlib/features/reverseproximityfeature.h b/searchlib/src/vespa/searchlib/features/reverseproximityfeature.h index 020cc25a2f9..7dad54e65d5 100644 --- a/searchlib/src/vespa/searchlib/features/reverseproximityfeature.h +++ b/searchlib/src/vespa/searchlib/features/reverseproximityfeature.h @@ -1,6 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include <string> +#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> @@ -21,7 +23,7 @@ struct ReverseProximityConfig { /** * Implements the executor for reverse proximity. */ -class ReverseProximityExecutor : public fef::FeatureExecutor { +class ReverseProximityExecutor : public search::fef::FeatureExecutor { public: /** * Constructs an executor for reverse proximity. @@ -29,32 +31,48 @@ public: * @param env The query environment. * @param config The completeness config. */ - ReverseProximityExecutor(const fef::IQueryEnvironment &env, + ReverseProximityExecutor(const search::fef::IQueryEnvironment &env, const ReverseProximityConfig &config); - void execute(uint32_t docId) override; + virtual void execute(uint32_t docId) override; private: const ReverseProximityConfig &_config; // The proximity config. - fef::TermFieldHandle _termA; // Handle to the first query term. - fef::TermFieldHandle _termB; // Handle to the second query term. + search::fef::TermFieldHandle _termA; // Handle to the first query term. + search::fef::TermFieldHandle _termB; // Handle to the second query term. const fef::MatchData *_md; - void handle_bind_match_data(fef::MatchData &md) override; + virtual void handle_bind_match_data(fef::MatchData &md) override; }; /** * Implements the blueprint for proximity. */ -class ReverseProximityBlueprint : public fef::Blueprint { +class ReverseProximityBlueprint : public search::fef::Blueprint { public: + /** + * Constructs a blueprint for reverse proximity. + */ ReverseProximityBlueprint(); - void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; - fef::Blueprint::UP createInstance() const override; - fef::ParameterDescriptions getDescriptions() const override { - return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::ANY).number().number(); + + // Inherit doc from Blueprint. + virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, + search::fef::IDumpFeatureVisitor &visitor) const override; + + // Inherit doc from Blueprint. + virtual search::fef::Blueprint::UP createInstance() const override; + + // Inherit doc from Blueprint. + virtual search::fef::ParameterDescriptions getDescriptions() const override { + return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::ANY).number().number(); } - bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; - fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + + // Inherit doc from Blueprint. + virtual bool setup(const search::fef::IIndexEnvironment & env, + const search::fef::ParameterList & params) override; + + // Inherit doc from Blueprint. + virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + private: ReverseProximityConfig _config; }; diff --git a/searchlib/src/vespa/searchlib/features/subqueries_feature.h b/searchlib/src/vespa/searchlib/features/subqueries_feature.h index 0c882a9b24a..217548b3e96 100644 --- a/searchlib/src/vespa/searchlib/features/subqueries_feature.h +++ b/searchlib/src/vespa/searchlib/features/subqueries_feature.h @@ -8,33 +8,37 @@ namespace search { namespace features { -class SubqueriesExecutor : public fef::FeatureExecutor { - std::vector<fef::TermFieldHandle> _handles; - const fef::MatchData *_md; +class SubqueriesExecutor : public search::fef::FeatureExecutor { + std::vector<search::fef::TermFieldHandle> _handles; + const fef::MatchData *_md; + + virtual void handle_bind_match_data(fef::MatchData &md) override; - void handle_bind_match_data(fef::MatchData &md) override; public: - SubqueriesExecutor(const fef::IQueryEnvironment &env, uint32_t fieldId); - void execute(uint32_t docId) override; + SubqueriesExecutor(const search::fef::IQueryEnvironment &env, + uint32_t fieldId); + virtual void execute(uint32_t docId) override; }; //----------------------------------------------------------------------------- -class SubqueriesBlueprint : public fef::Blueprint +class SubqueriesBlueprint : public search::fef::Blueprint { private: - const fef::FieldInfo *_field; + const search::fef::FieldInfo *_field; public: SubqueriesBlueprint() : Blueprint("subqueries"), _field(nullptr) {} - void visitDumpFeatures(const fef::IIndexEnvironment &, fef::IDumpFeatureVisitor &) const override {} - fef::Blueprint::UP createInstance() const override { + virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &, + search::fef::IDumpFeatureVisitor &) const override {} + virtual search::fef::Blueprint::UP createInstance() const override { return Blueprint::UP(new SubqueriesBlueprint); } - fef::ParameterDescriptions getDescriptions() const override { - return fef::ParameterDescriptions().desc().field(); + virtual search::fef::ParameterDescriptions getDescriptions() const override { + return search::fef::ParameterDescriptions().desc().field(); } - bool setup(const fef::IIndexEnvironment &env, const fef::ParameterList ¶ms) override; - fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + virtual bool setup(const search::fef::IIndexEnvironment &env, + const search::fef::ParameterList ¶ms) override; + virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h b/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h index 4f368a9e188..eba2a9f44ae 100644 --- a/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h +++ b/searchlib/src/vespa/searchlib/features/tensor_from_attribute_executor.h @@ -34,7 +34,7 @@ public: { _attrBuffer.allocate(_attribute->getMaxValueCount()); } - void execute(uint32_t docId) override; + virtual void execute(uint32_t docId) override; }; template <typename WeightedBufferType> diff --git a/searchlib/src/vespa/searchlib/features/term_field_md_feature.h b/searchlib/src/vespa/searchlib/features/term_field_md_feature.h index 6c574aa90b4..ef3d83de98d 100644 --- a/searchlib/src/vespa/searchlib/features/term_field_md_feature.h +++ b/searchlib/src/vespa/searchlib/features/term_field_md_feature.h @@ -16,14 +16,16 @@ namespace features { **/ class TermFieldMdExecutor : public fef::FeatureExecutor { - typedef std::pair<fef::TermFieldHandle, query::Weight> Element; + typedef std::pair<search::fef::TermFieldHandle, query::Weight> Element; std::vector<Element> _terms; const fef::MatchData *_md; - void execute(uint32_t docId) override; - void handle_bind_match_data(fef::MatchData &md) override; + virtual void execute(uint32_t docId) override; + virtual void handle_bind_match_data(fef::MatchData &md) override; + public: - TermFieldMdExecutor(const fef::IQueryEnvironment &env, uint32_t fieldId); + TermFieldMdExecutor(const search::fef::IQueryEnvironment &env, + uint32_t fieldId); }; @@ -31,18 +33,31 @@ public: * Implements the blueprint for the term field md executor. **/ class TermFieldMdBlueprint : public fef::Blueprint { - const fef::FieldInfo * _field; + const search::fef::FieldInfo * _field; public: TermFieldMdBlueprint(); - void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; - fef::Blueprint::UP createInstance() const override; - fef::ParameterDescriptions getDescriptions() const override { + + // Inherit doc from Blueprint. + virtual void visitDumpFeatures(const fef::IIndexEnvironment & env, + fef::IDumpFeatureVisitor & visitor) const override; + + // Inherit doc from Blueprint. + virtual fef::Blueprint::UP createInstance() const override; + + // Inherit doc from Blueprint. + virtual fef::ParameterDescriptions getDescriptions() const override { return fef::ParameterDescriptions().desc().field(); } - bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; - fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment & env, vespalib::Stash &stash) const override; + + // Inherit doc from Blueprint. + virtual bool setup(const fef::IIndexEnvironment & env, + const fef::ParameterList & params) override; + + // Inherit doc from Blueprint. + virtual fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment & env, vespalib::Stash &stash) const override; }; } // namespace features } // namespace search + diff --git a/searchlib/src/vespa/searchlib/features/termdistancefeature.h b/searchlib/src/vespa/searchlib/features/termdistancefeature.h index 609ea6d1b63..ed79a51c199 100644 --- a/searchlib/src/vespa/searchlib/features/termdistancefeature.h +++ b/searchlib/src/vespa/searchlib/features/termdistancefeature.h @@ -23,7 +23,7 @@ struct TermDistanceParams { /** * Implements the executor for calculating min term distance (forward and reverse). **/ -class TermDistanceExecutor : public fef::FeatureExecutor +class TermDistanceExecutor : public search::fef::FeatureExecutor { private: const TermDistanceParams & _params; @@ -34,31 +34,44 @@ private: virtual void handle_bind_match_data(fef::MatchData &md) override; public: - TermDistanceExecutor(const fef::IQueryEnvironment & env, + TermDistanceExecutor(const search::fef::IQueryEnvironment & env, const TermDistanceParams & params); - void execute(uint32_t docId) override; - bool valid() const; + virtual void execute(uint32_t docId) override; + bool valid() const; }; /** * Implements the blueprint for the term distance executor. **/ -class TermDistanceBlueprint : public fef::Blueprint { +class TermDistanceBlueprint : public search::fef::Blueprint { private: TermDistanceParams _params; public: TermDistanceBlueprint(); - void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; - fef::Blueprint::UP createInstance() const override; - fef::ParameterDescriptions getDescriptions() const override { - return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::ANY).number().number(); + + // Inherit doc from Blueprint. + virtual void visitDumpFeatures(const search::fef::IIndexEnvironment & env, + search::fef::IDumpFeatureVisitor & visitor) const override; + + // Inherit doc from Blueprint. + virtual search::fef::Blueprint::UP createInstance() const override; + + // Inherit doc from Blueprint. + virtual search::fef::ParameterDescriptions getDescriptions() const override { + return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::ANY).number().number(); } - bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; - fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + + // Inherit doc from Blueprint. + virtual bool setup(const search::fef::IIndexEnvironment & env, + const search::fef::ParameterList & params) override; + + // Inherit doc from Blueprint. + virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; } // namespace features } // namespace search + diff --git a/searchlib/src/vespa/searchlib/features/termeditdistancefeature.h b/searchlib/src/vespa/searchlib/features/termeditdistancefeature.h index c7ef3d672fd..26faaae4b93 100644 --- a/searchlib/src/vespa/searchlib/features/termeditdistancefeature.h +++ b/searchlib/src/vespa/searchlib/features/termeditdistancefeature.h @@ -1,6 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include <string> +#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> #include <vespa/searchlib/common/feature.h> @@ -43,14 +45,14 @@ struct TermEditDistanceConfig { /** * Implements the executor for the term edit distance calculator. */ -class TermEditDistanceExecutor : public fef::FeatureExecutor { +class TermEditDistanceExecutor : public search::fef::FeatureExecutor { public: /** * Constructs a new executor for the term edit distance calculator. * * @param config The config for this executor. */ - TermEditDistanceExecutor(const fef::IQueryEnvironment &env, + TermEditDistanceExecutor(const search::fef::IQueryEnvironment &env, const TermEditDistanceConfig &config); @@ -78,7 +80,7 @@ public: * * @param docid local document id to be evaluated */ - void execute(uint32_t docId) override; + virtual void execute(uint32_t docId) override; private: /** @@ -89,11 +91,11 @@ private: */ void logRow(const std::vector<TedCell> &row, size_t numCols); - void handle_bind_match_data(fef::MatchData &md) override; + virtual void handle_bind_match_data(fef::MatchData &md) override; private: const TermEditDistanceConfig &_config; // The config for this executor. - std::vector<fef::TermFieldHandle> _fieldHandles; // The handles of all query terms. + std::vector<search::fef::TermFieldHandle> _fieldHandles; // The handles of all query terms. std::vector<feature_t> _termWeights; // The weights of all query terms. std::vector<TedCell> _prevRow; // Optimized representation of the cost table. std::vector<TedCell> _thisRow; // @@ -103,17 +105,26 @@ private: /** * Implements the blueprint for the term edit distance calculator. */ -class TermEditDistanceBlueprint : public fef::Blueprint { +class TermEditDistanceBlueprint : public search::fef::Blueprint { public: /** * Constructs a new blueprint for the term edit distance calculator. */ TermEditDistanceBlueprint(); - void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; - fef::Blueprint::UP createInstance() const override; - fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; - fef::ParameterDescriptions getDescriptions() const override { - return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::SINGLE); + + // Inherit doc from Blueprint. + virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, + search::fef::IDumpFeatureVisitor &visitor) const override; + + // Inherit doc from Blueprint. + virtual search::fef::Blueprint::UP createInstance() const override; + + // Inherit doc from Blueprint. + virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + + // Inherit doc from Blueprint. + virtual search::fef::ParameterDescriptions getDescriptions() const override { + return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::SINGLE); } /** @@ -132,10 +143,12 @@ public: * @param params A list of the parameters mentioned above. * @return Whether or not setup was possible. */ - bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; + virtual bool setup(const search::fef::IIndexEnvironment & env, + const search::fef::ParameterList & params) override; private: TermEditDistanceConfig _config; // The config for this blueprint. }; }} + diff --git a/searchlib/src/vespa/searchlib/features/termfeature.h b/searchlib/src/vespa/searchlib/features/termfeature.h index cd42333f44b..cb4b92dfc11 100644 --- a/searchlib/src/vespa/searchlib/features/termfeature.h +++ b/searchlib/src/vespa/searchlib/features/termfeature.h @@ -1,6 +1,8 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once +#include <string> +#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> #include <vespa/searchlib/common/feature.h> @@ -11,7 +13,7 @@ namespace features { /** * Implements the executor for term feature. */ -class TermExecutor : public fef::FeatureExecutor { +class TermExecutor : public search::fef::FeatureExecutor { public: /** * Constructs an executor for term feature. @@ -19,32 +21,48 @@ public: * @param env The query environment. * @param termId The id of the query term to evaluate. */ - TermExecutor(const fef::IQueryEnvironment &env, uint32_t termId); - void execute(uint32_t docId) override; + TermExecutor(const search::fef::IQueryEnvironment &env, + uint32_t termId); + virtual void execute(uint32_t docId) override; private: - const fef::ITermData *_termData; - feature_t _connectedness; - feature_t _significance; + const search::fef::ITermData *_termData; + feature_t _connectedness; + feature_t _significance; }; /** * Implements the blueprint for term feature. */ -class TermBlueprint : public fef::Blueprint { +class TermBlueprint : public search::fef::Blueprint { public: + /** + * Constructs a blueprint for term feature. + */ TermBlueprint(); - void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; - fef::Blueprint::UP createInstance() const override; - fef::ParameterDescriptions getDescriptions() const override { - return fef::ParameterDescriptions().desc().number(); + // Inherit doc from Blueprint. + virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, + search::fef::IDumpFeatureVisitor &visitor) const override; + + // Inherit doc from Blueprint. + virtual search::fef::Blueprint::UP createInstance() const override; + + // Inherit doc from Blueprint. + virtual search::fef::ParameterDescriptions getDescriptions() const override { + return search::fef::ParameterDescriptions().desc().number(); } - bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; - fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + + // Inherit doc from Blueprint. + virtual bool setup(const search::fef::IIndexEnvironment & env, + const search::fef::ParameterList & params) override; + + // Inherit doc from Blueprint. + virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; private: uint32_t _termId; }; }} + diff --git a/searchlib/src/vespa/searchlib/features/terminfofeature.h b/searchlib/src/vespa/searchlib/features/terminfofeature.h index 962b35fc936..7f1d8b8a6e2 100644 --- a/searchlib/src/vespa/searchlib/features/terminfofeature.h +++ b/searchlib/src/vespa/searchlib/features/terminfofeature.h @@ -2,26 +2,30 @@ #pragma once +#include <string> +#include <vector> #include <vespa/searchlib/fef/blueprint.h> #include <vespa/searchlib/fef/featureexecutor.h> namespace search { namespace features { -class TermInfoBlueprint : public fef::Blueprint +class TermInfoBlueprint : public search::fef::Blueprint { private: uint32_t _termIdx; public: TermInfoBlueprint(); - void visitDumpFeatures(const fef::IIndexEnvironment &indexEnv, fef::IDumpFeatureVisitor &visitor) const override; - fef::Blueprint::UP createInstance() const override { return fef::Blueprint::UP(new TermInfoBlueprint()); } - fef::ParameterDescriptions getDescriptions() const override { - return fef::ParameterDescriptions().desc().number(); + virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &indexEnv, + search::fef::IDumpFeatureVisitor &visitor) const override; + virtual search::fef::Blueprint::UP createInstance() const override { return search::fef::Blueprint::UP(new TermInfoBlueprint()); } + virtual search::fef::ParameterDescriptions getDescriptions() const override { + return search::fef::ParameterDescriptions().desc().number(); } - bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override; - fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; + virtual bool setup(const search::fef::IIndexEnvironment & env, + const search::fef::ParameterList & params) override; + virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &queryEnv, vespalib::Stash &stash) const override; }; } // namespace features diff --git a/searchlib/src/vespa/searchlib/features/text_similarity_feature.h b/searchlib/src/vespa/searchlib/features/text_similarity_feature.h index b47a7112a0c..084d1dd4b1c 100644 --- a/searchlib/src/vespa/searchlib/features/text_similarity_feature.h +++ b/searchlib/src/vespa/searchlib/features/text_similarity_feature.h @@ -2,6 +2,8 @@ #pragma once +#include <string> +#include <vector> #include <vespa/searchlib/fef/fef.h> #include <vespa/vespalib/util/priority_queue.h> @@ -10,7 +12,7 @@ namespace features { //----------------------------------------------------------------------------- -class TextSimilarityExecutor : public fef::FeatureExecutor +class TextSimilarityExecutor : public search::fef::FeatureExecutor { private: std::vector<fef::TermFieldHandle> _handles; @@ -19,11 +21,11 @@ private: struct Item { uint32_t idx; - fef::TermFieldMatchData::PositionsIterator pos; - fef::TermFieldMatchData::PositionsIterator end; + search::fef::TermFieldMatchData::PositionsIterator pos; + search::fef::TermFieldMatchData::PositionsIterator end; Item(uint32_t idx_in, - fef::TermFieldMatchData::PositionsIterator pos_in, - fef::TermFieldMatchData::PositionsIterator end_in) + search::fef::TermFieldMatchData::PositionsIterator pos_in, + search::fef::TermFieldMatchData::PositionsIterator end_in) : idx(idx_in), pos(pos_in), end(end_in) {} bool operator<(const Item &other) const { return (pos->getPosition() == other.pos->getPosition()) @@ -35,17 +37,17 @@ private: vespalib::PriorityQueue<Item> _queue; const fef::MatchData *_md; - void handle_bind_match_data(fef::MatchData &md) override; + virtual void handle_bind_match_data(fef::MatchData &md) override; public: - TextSimilarityExecutor(const fef::IQueryEnvironment &env, uint32_t field_id); - bool isPure() override { return _handles.empty(); } - void execute(uint32_t docId) override; + TextSimilarityExecutor(const search::fef::IQueryEnvironment &env, uint32_t field_id); + virtual bool isPure() override { return _handles.empty(); } + virtual void execute(uint32_t docId) override; }; //----------------------------------------------------------------------------- -class TextSimilarityBlueprint : public fef::Blueprint +class TextSimilarityBlueprint : public search::fef::Blueprint { private: static const vespalib::string score_output; @@ -58,13 +60,15 @@ private: public: TextSimilarityBlueprint(); - void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; - fef::Blueprint::UP createInstance() const override; - fef::ParameterDescriptions getDescriptions() const override { - return fef::ParameterDescriptions().desc().indexField(fef::ParameterCollection::SINGLE); + virtual void visitDumpFeatures(const search::fef::IIndexEnvironment &env, + search::fef::IDumpFeatureVisitor &visitor) const override; + virtual search::fef::Blueprint::UP createInstance() const override; + virtual search::fef::ParameterDescriptions getDescriptions() const override { + return search::fef::ParameterDescriptions().desc().indexField(search::fef::ParameterCollection::SINGLE); } - bool setup(const fef::IIndexEnvironment &env, const fef::ParameterList ¶ms) override; - fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; + virtual bool setup(const search::fef::IIndexEnvironment &env, + const search::fef::ParameterList ¶ms) override; + virtual search::fef::FeatureExecutor &createExecutor(const search::fef::IQueryEnvironment &env, vespalib::Stash &stash) const override; }; //----------------------------------------------------------------------------- diff --git a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h index 3d99b55f414..8130c35dc2c 100644 --- a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h +++ b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h @@ -113,30 +113,30 @@ public: void illegalVisit() {} - void visit(search::query::And &) override { illegalVisit(); } - void visit(search::query::AndNot &) override { illegalVisit(); } - void visit(search::query::Equiv &) override { illegalVisit(); } - void visit(search::query::Near &) override { illegalVisit(); } - void visit(search::query::ONear &) override { illegalVisit(); } - void visit(search::query::Or &) override { illegalVisit(); } - void visit(search::query::Rank &) override { illegalVisit(); } - void visit(search::query::WeakAnd &) override { illegalVisit(); } - - void visit(search::query::Phrase &n) override { + virtual void visit(search::query::And &) override { illegalVisit(); } + virtual void visit(search::query::AndNot &) override { illegalVisit(); } + virtual void visit(search::query::Equiv &) override { illegalVisit(); } + virtual void visit(search::query::Near &) override { illegalVisit(); } + virtual void visit(search::query::ONear &) override { illegalVisit(); } + virtual void visit(search::query::Or &) override { illegalVisit(); } + virtual void visit(search::query::Rank &) override { illegalVisit(); } + virtual void visit(search::query::WeakAnd &) override { illegalVisit(); } + + virtual void visit(search::query::Phrase &n) override { visitPhrase(n); } - void visit(search::query::WeightedSetTerm &n) override { visitWeightedSetTerm(n); } - void visit(search::query::DotProduct &n) override { visitDotProduct(n); } - void visit(search::query::WandTerm &n) override { visitWandTerm(n); } - - void visit(search::query::NumberTerm &n) override = 0; - void visit(search::query::LocationTerm &n) override = 0; - void visit(search::query::PrefixTerm &n) override = 0; - void visit(search::query::RangeTerm &n) override = 0; - void visit(search::query::StringTerm &n) override = 0; - void visit(search::query::SubstringTerm &n) override = 0; - void visit(search::query::SuffixTerm &n) override = 0; - void visit(search::query::RegExpTerm &n) override = 0; + virtual void visit(search::query::WeightedSetTerm &n) override { visitWeightedSetTerm(n); } + virtual void visit(search::query::DotProduct &n) override { visitDotProduct(n); } + virtual void visit(search::query::WandTerm &n) override { visitWandTerm(n); } + + virtual void visit(search::query::NumberTerm &n) override = 0; + virtual void visit(search::query::LocationTerm &n) override = 0; + virtual void visit(search::query::PrefixTerm &n) override = 0; + virtual void visit(search::query::RangeTerm &n) override = 0; + virtual void visit(search::query::StringTerm &n) override = 0; + virtual void visit(search::query::SubstringTerm &n) override = 0; + virtual void visit(search::query::SuffixTerm &n) override = 0; + virtual void visit(search::query::RegExpTerm &n) override = 0; }; } // namespace search::queryeval diff --git a/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp b/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp index 974d7fd1ca5..6732f37482d 100644 --- a/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/equivsearch.cpp @@ -1,6 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/fastos/fastos.h> #include "equivsearch.h" +#include <vespa/vespalib/objects/visit.h> +#include <vespa/searchlib/fef/termmatchdatamerger.h> namespace search { namespace queryeval { @@ -14,7 +17,7 @@ private: bool _valid; protected: - void doUnpack(uint32_t docid) override; + virtual void doUnpack(uint32_t docid) override; public: /** diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_search.h b/searchlib/src/vespa/searchlib/queryeval/fake_search.h index 020f045f49d..3ba3d2cf439 100644 --- a/searchlib/src/vespa/searchlib/queryeval/fake_search.h +++ b/searchlib/src/vespa/searchlib/queryeval/fake_search.h @@ -34,11 +34,12 @@ public: { assert(_tfmda.size() == 1); } - void doSeek(uint32_t docid) override; - void doUnpack(uint32_t docid) override; - const PostingInfo *getPostingInfo() const override { return _result.postingInfo(); } - void visitMembers(vespalib::ObjectVisitor &visitor) const override; + virtual void doSeek(uint32_t docid) override; + virtual void doUnpack(uint32_t docid) override; + virtual const PostingInfo *getPostingInfo() const override { return _result.postingInfo(); } + virtual void visitMembers(vespalib::ObjectVisitor &visitor) const override; }; } // namespace queryeval } // namespace search + diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp index 6aadb33c035..9e7e7ed6c9a 100644 --- a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp @@ -54,15 +54,15 @@ public: template <class TermNode> void visitTerm(TermNode &n); - void visit(NumberTerm &n) override { visitTerm(n); } - void visit(LocationTerm &n) override { visitTerm(n); } - void visit(PrefixTerm &n) override { visitTerm(n); } - void visit(RangeTerm &n) override { visitTerm(n); } - void visit(StringTerm &n) override { visitTerm(n); } - void visit(SubstringTerm &n) override { visitTerm(n); } - void visit(SuffixTerm &n) override { visitTerm(n); } - void visit(PredicateQuery &n) override { visitTerm(n); } - void visit(RegExpTerm &n) override { visitTerm(n); } + virtual void visit(NumberTerm &n) override { visitTerm(n); } + virtual void visit(LocationTerm &n) override { visitTerm(n); } + virtual void visit(PrefixTerm &n) override { visitTerm(n); } + virtual void visit(RangeTerm &n) override { visitTerm(n); } + virtual void visit(StringTerm &n) override { visitTerm(n); } + virtual void visit(SubstringTerm &n) override { visitTerm(n); } + virtual void visit(SuffixTerm &n) override { visitTerm(n); } + virtual void visit(PredicateQuery &n) override { visitTerm(n); } + virtual void visit(RegExpTerm &n) override { visitTerm(n); } }; template <class Map> diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h index 822cf439ad6..34b6e250797 100644 --- a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h +++ b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.h @@ -55,11 +55,12 @@ public: const vespalib::string &term, const FakeResult &result); + // inherited from Searchable using Searchable::createBlueprint; - Blueprint::UP createBlueprint(const IRequestContext & requestContext, - const FieldSpec &field, - const search::query::Node &term) override; - ~FakeSearchable(); + virtual Blueprint::UP createBlueprint(const IRequestContext & requestContext, + const FieldSpec &field, + const search::query::Node &term) override; + virtual ~FakeSearchable(); }; } // namespace search::queryeval diff --git a/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.cpp b/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.cpp index 95615c8b923..9a91bf6e2b8 100644 --- a/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/get_weight_from_node.cpp @@ -1,9 +1,15 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/fastos/fastos.h> +#include <vespa/log/log.h> +LOG_SETUP(".get_weight_from_node"); + #include "get_weight_from_node.h" #include <vespa/searchlib/query/tree/intermediatenodes.h> +#include <vespa/searchlib/query/tree/node.h> #include <vespa/searchlib/query/tree/simplequery.h> #include <vespa/searchlib/query/tree/templatetermvisitor.h> +#include <vespa/searchlib/query/tree/termnodes.h> using search::query::Node; using search::query::SimpleQueryNodeTypes; @@ -25,7 +31,7 @@ struct WeightExtractor : public TemplateTermVisitor<WeightExtractor, } // Treat Equiv nodes as terms. - void visit(search::query::Equiv &n) override { visitTerm(n); } + virtual void visit(search::query::Equiv &n) override { visitTerm(n); } }; } // namespace search::queryeval::<unnamed> diff --git a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp index 65b1257b105..64776b99f16 100644 --- a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp @@ -542,7 +542,7 @@ class FindSource : public Blueprint::IPredicate { public: FindSource(uint32_t sourceId) : _sourceId(sourceId) { } - bool check(const Blueprint & bp) const override { return bp.getSourceId() == _sourceId; } + virtual bool check(const Blueprint & bp) const override { return bp.getSourceId() == _sourceId; } private: uint32_t _sourceId; }; diff --git a/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.h b/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.h index c0b3c9a9ff6..d910499b463 100644 --- a/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.h +++ b/searchlib/src/vespa/searchlib/queryeval/monitoring_search_iterator.h @@ -81,14 +81,15 @@ public: vespalib::string toString() const { return _str; } - void openStruct(const vespalib::string &name, const vespalib::string &type) override; - void closeStruct() override; - void visitBool(const vespalib::string &name, bool value) override; - void visitInt(const vespalib::string &name, int64_t value) override; - void visitFloat(const vespalib::string &name, double value) override; - void visitString(const vespalib::string &name, const vespalib::string &value) override; - void visitNull(const vespalib::string &name) override; - void visitNotImplemented() override; + // Overrides ObjectVisitor + virtual void openStruct(const vespalib::string &name, const vespalib::string &type) override; + virtual void closeStruct() override; + virtual void visitBool(const vespalib::string &name, bool value) override; + virtual void visitInt(const vespalib::string &name, int64_t value) override; + virtual void visitFloat(const vespalib::string &name, double value) override; + virtual void visitString(const vespalib::string &name, const vespalib::string &value) override; + virtual void visitNull(const vespalib::string &name) override; + virtual void visitNotImplemented() override; }; typedef std::unique_ptr<MonitoringSearchIterator> UP; @@ -114,7 +115,7 @@ public: SearchIterator::initRange(_search->getDocId()+1, _search->getEndId()); } Trinary is_strict() const override { return _search->is_strict(); } - const PostingInfo *getPostingInfo() const override; + virtual const PostingInfo *getPostingInfo() const override; void visitMembers(vespalib::ObjectVisitor &visitor) const override; const SearchIterator &getIterator() const { return *_search; } diff --git a/searchlib/src/vespa/searchlib/queryeval/nearsearch.h b/searchlib/src/vespa/searchlib/queryeval/nearsearch.h index 96dd497fb7c..6ba631abb16 100644 --- a/searchlib/src/vespa/searchlib/queryeval/nearsearch.h +++ b/searchlib/src/vespa/searchlib/queryeval/nearsearch.h @@ -77,8 +77,10 @@ public: uint32_t window, bool strict); - void visitMembers(vespalib::ObjectVisitor &visitor) const override; - void doSeek(uint32_t docId) override; + virtual void visitMembers(vespalib::ObjectVisitor &visitor) const override; + + // Inherit doc from SearchIterator. + virtual void doSeek(uint32_t docId) override; }; /** @@ -95,7 +97,9 @@ private: }; std::vector<Matcher> _matchers; - bool match(uint32_t docId) override; + + // Inherit doc from NearSearchBase. + virtual bool match(uint32_t docId) override; public: /** @@ -127,7 +131,9 @@ private: }; std::vector<Matcher> _matchers; - bool match(uint32_t docId) override; + + // Inherit doc from NearSearchBase. + virtual bool match(uint32_t docId) override; public: /** diff --git a/searchlib/src/vespa/searchlib/queryeval/orlikesearch.h b/searchlib/src/vespa/searchlib/queryeval/orlikesearch.h index b1fae7c0bb2..5a62cc5dedb 100644 --- a/searchlib/src/vespa/searchlib/queryeval/orlikesearch.h +++ b/searchlib/src/vespa/searchlib/queryeval/orlikesearch.h @@ -2,8 +2,8 @@ #pragma once -#include "orsearch.h" #include <vespa/vespalib/objects/visit.h> +#include "orsearch.h" namespace search { namespace queryeval { @@ -52,16 +52,16 @@ public: _unpacker(unpacker) { } private: - void onRemove(size_t index) override { + virtual void onRemove(size_t index) override { _unpacker.onRemove(index); } - void onInsert(size_t index) override { + virtual void onInsert(size_t index) override { _unpacker.onInsert(index); } - void doUnpack(uint32_t docid) override { + virtual void doUnpack(uint32_t docid) override { _unpacker.unpack(docid, *this); } - bool needUnpack(size_t index) const override { + virtual bool needUnpack(size_t index) const override { return _unpacker.needUnpack(index); } Unpack _unpacker; @@ -70,3 +70,4 @@ private: } // namespace queryeval } // namespace search + diff --git a/searchlib/src/vespa/searchlib/queryeval/orsearch.h b/searchlib/src/vespa/searchlib/queryeval/orsearch.h index bd3d0aa5e3f..e75776d7161 100644 --- a/searchlib/src/vespa/searchlib/queryeval/orsearch.h +++ b/searchlib/src/vespa/searchlib/queryeval/orsearch.h @@ -27,9 +27,9 @@ public: protected: OrSearch(const Children & children) : MultiSearch(children) { } private: - - bool isOr() const override { return true; } + virtual bool isOr() const override { return true; } }; } // namespace queryeval } // namespace search + diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h index 46765f40fd6..2d1f09da9c8 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h +++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h @@ -48,9 +48,10 @@ public: const fef::TermFieldMatchDataArray &childMatch, std::vector<uint32_t> eval_order, fef::TermFieldMatchData &tmd, bool strict); - void doSeek(uint32_t doc_id) override; - void doUnpack(uint32_t doc_id) override; - void visitMembers(vespalib::ObjectVisitor &visitor) const override; + + virtual void doSeek(uint32_t doc_id) override; + virtual void doUnpack(uint32_t doc_id) override; + virtual void visitMembers(vespalib::ObjectVisitor &visitor) const override; SimplePhraseSearch & setDoom(const vespalib::Doom * doom) { _doom = doom; return *this; } }; diff --git a/searchlib/src/vespa/searchlib/queryeval/simplesearch.h b/searchlib/src/vespa/searchlib/queryeval/simplesearch.h index 53c22deb237..50553541e98 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simplesearch.h +++ b/searchlib/src/vespa/searchlib/queryeval/simplesearch.h @@ -23,8 +23,8 @@ private: SimpleSearch &operator=(const SimpleSearch &); protected: - void doSeek(uint32_t docid) override; - void doUnpack(uint32_t docid) override; + virtual void doSeek(uint32_t docid) override; + virtual void doUnpack(uint32_t docid) override; public: SimpleSearch(const SimpleResult &result); @@ -32,8 +32,8 @@ public: _tag = t; return *this; } - void visitMembers(vespalib::ObjectVisitor &visitor) const override; - ~SimpleSearch(); + virtual void visitMembers(vespalib::ObjectVisitor &visitor) const override; + virtual ~SimpleSearch(); }; } // namespace queryeval diff --git a/searchlib/src/vespa/searchlib/queryeval/termasstring.cpp b/searchlib/src/vespa/searchlib/queryeval/termasstring.cpp index 8aa015dc752..07a7763d626 100644 --- a/searchlib/src/vespa/searchlib/queryeval/termasstring.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/termasstring.cpp @@ -78,28 +78,29 @@ struct TermAsStringVisitor : public QueryVisitor { isSet = false; } - void visit(And &) override {illegalVisit(); } - void visit(AndNot &) override {illegalVisit(); } - void visit(Equiv &) override {illegalVisit(); } - void visit(Near &) override {illegalVisit(); } - void visit(ONear &) override {illegalVisit(); } - void visit(Or &) override {illegalVisit(); } - void visit(Phrase &) override {illegalVisit(); } - void visit(Rank &) override {illegalVisit(); } - void visit(WeakAnd &) override {illegalVisit(); } - void visit(WeightedSetTerm &) override {illegalVisit(); } - void visit(DotProduct &) override {illegalVisit(); } - void visit(WandTerm &) override {illegalVisit(); } - - void visit(NumberTerm &n) override {visitTerm(n); } - void visit(LocationTerm &n) override {visitTerm(n); } - void visit(PrefixTerm &n) override {visitTerm(n); } - void visit(RangeTerm &n) override {visitTerm(n); } - void visit(StringTerm &n) override {visitTerm(n); } - void visit(SubstringTerm &n) override {visitTerm(n); } - void visit(SuffixTerm &n) override {visitTerm(n); } - void visit(RegExpTerm &n) override {visitTerm(n); } - void visit(PredicateQuery &) override {illegalVisit(); } + virtual void visit(And &) override { illegalVisit(); } + virtual void visit(AndNot &) override { illegalVisit(); } + virtual void visit(Equiv &) override { illegalVisit(); } + virtual void visit(Near &) override { illegalVisit(); } + virtual void visit(ONear &) override { illegalVisit(); } + virtual void visit(Or &) override { illegalVisit(); } + virtual void visit(Phrase &) override { illegalVisit(); } + virtual void visit(Rank &) override { illegalVisit(); } + virtual void visit(WeakAnd &) override { illegalVisit(); } + virtual void visit(WeightedSetTerm &) override { illegalVisit(); } + virtual void visit(DotProduct &) override { illegalVisit(); } + virtual void visit(WandTerm &) override { illegalVisit(); } + + virtual void visit(NumberTerm &n) override { visitTerm(n); } + virtual void visit(LocationTerm &n) override { visitTerm(n); } + virtual void visit(PrefixTerm &n) override { visitTerm(n); } + virtual void visit(RangeTerm &n) override { visitTerm(n); } + virtual void visit(StringTerm &n) override { visitTerm(n); } + virtual void visit(SubstringTerm &n) override { visitTerm(n); } + virtual void visit(SuffixTerm &n) override { visitTerm(n); } + virtual void visit(RegExpTerm &n) override { visitTerm(n); } + + virtual void visit(PredicateQuery &) override { illegalVisit(); } }; } // namespace diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.h b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.h index 3c1aba30bf7..1c3059913e8 100644 --- a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.h +++ b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_search.h @@ -15,7 +15,7 @@ struct WeakAndSearch : SearchIterator { virtual wand::score_t get_max_score(size_t idx) const = 0; virtual const Terms &getTerms() const = 0; virtual uint32_t getN() const = 0; - void visitMembers(vespalib::ObjectVisitor &visitor) const override; + virtual void visitMembers(vespalib::ObjectVisitor &visitor) const override; static SearchIterator *createArrayWand(const Terms &terms, uint32_t n, bool strict); static SearchIterator *createHeapWand(const Terms &terms, uint32_t n, bool strict); static SearchIterator *create(const Terms &terms, uint32_t n, bool strict); diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.cpp index 2b7b5398e1e..c1f9baedb17 100644 --- a/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.cpp +++ b/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.cpp @@ -788,8 +788,11 @@ class FakeEGCompr64SkipFilterOcc : public FakeEGCompr64FilterOcc { public: FakeEGCompr64SkipFilterOcc(const FakeWord &fw); - ~FakeEGCompr64SkipFilterOcc(); - search::queryeval::SearchIterator *createIterator(const fef::TermFieldMatchDataArray &matchData) const override; + + ~FakeEGCompr64SkipFilterOcc(void); + + virtual search::queryeval::SearchIterator * + createIterator(const fef::TermFieldMatchDataArray &matchData) const override; }; diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.h index a2bd1ab1038..fb49bd22cda 100644 --- a/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.h +++ b/searchlib/src/vespa/searchlib/test/fakedata/fakeegcompr64filterocc.h @@ -4,9 +4,11 @@ #include "fakeword.h" #include "fakeposting.h" -namespace search { +namespace search +{ -namespace fakedata { +namespace fakedata +{ /* * Old compressed posocc format. @@ -38,30 +40,70 @@ private: void setup(const FakeWord &fw); template <bool bigEndian> - void setupT(const FakeWord &fw); + void + setupT(const FakeWord &fw); public: FakeEGCompr64FilterOcc(const FakeWord &fw); - FakeEGCompr64FilterOcc(const FakeWord &fw, bool bigEndian, const char *nameSuffix); - - ~FakeEGCompr64FilterOcc(); - - static void forceLink(); - - size_t bitSize() const override; - bool hasWordPositions() const override; - size_t skipBitSize() const override; - size_t l1SkipBitSize() const override; - size_t l2SkipBitSize() const override; - size_t l3SkipBitSize() const override; - size_t l4SkipBitSize() const override; - int lowLevelSinglePostingScan() const override; - int lowLevelSinglePostingScanUnpack() const override; - int lowLevelAndPairPostingScan(const FakePosting &rhs) const override; - int lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; - queryeval::SearchIterator *createIterator(const fef::TermFieldMatchDataArray &matchData) const override; + + FakeEGCompr64FilterOcc(const FakeWord &fw, + bool bigEndian, + const char *nameSuffix); + + ~FakeEGCompr64FilterOcc(void); + + static void + forceLink(void); + + /* + * Size of posting list, in bits. + */ + size_t bitSize(void) const override; + + virtual bool hasWordPositions(void) const override; + + /* + * Size of posting skip list, in bits. + */ + size_t skipBitSize(void) const override; + size_t l1SkipBitSize(void) const override; + size_t l2SkipBitSize(void) const override; + size_t l3SkipBitSize(void) const override; + size_t l4SkipBitSize(void) const override; + + /* + * Single posting list performance, without feature unpack. + */ + virtual int + lowLevelSinglePostingScan(void) const override; + + /* + * Single posting list performance, with feature unpack. + */ + virtual int + lowLevelSinglePostingScanUnpack(void) const override; + + /* + * Two posting lists performance (same format) without feature unpack. + */ + virtual int + lowLevelAndPairPostingScan(const FakePosting &rhs) const override; + + /* + * Two posting lists performance (same format) with feature unpack. + */ + virtual int + lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; + + + /* + * Iterator factory, for current query evaluation framework. + */ + virtual search::queryeval::SearchIterator * + createIterator(const fef::TermFieldMatchDataArray &matchData) const override; }; } // namespace fakedata } // namespace search + diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.h index 2946f15c539..427110383fd 100644 --- a/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.h +++ b/searchlib/src/vespa/searchlib/test/fakedata/fakefilterocc.h @@ -4,9 +4,11 @@ #include "fakeword.h" #include "fakeposting.h" -namespace search { +namespace search +{ -namespace fakedata { +namespace fakedata +{ /* * Old posocc format. @@ -20,19 +22,51 @@ private: public: FakeFilterOcc(const FakeWord &fakeword); - ~FakeFilterOcc(); + ~FakeFilterOcc(void); + + static void + forceLink(void); + + /* + * Size of posting list, in bits. + */ + size_t bitSize(void) const override; + + virtual bool hasWordPositions(void) const override; - static void forceLink(); + /* + * Single posting list performance, without feature unpack. + */ + virtual int + lowLevelSinglePostingScan(void) const override; - size_t bitSize() const override; - bool hasWordPositions(void) const override; - int lowLevelSinglePostingScan(void) const override; - int lowLevelSinglePostingScanUnpack(void) const override; - int lowLevelAndPairPostingScan(const FakePosting &rhs) const override; - int lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; - queryeval::SearchIterator * createIterator(const fef::TermFieldMatchDataArray &matchData) const override; + /* + * Single posting list performance, with feature unpack. + */ + virtual int + lowLevelSinglePostingScanUnpack(void) const override; + + /* + * Two posting lists performance (same format) without feature unpack. + */ + virtual int + lowLevelAndPairPostingScan(const FakePosting &rhs) const override; + + /* + * Two posting lists performance (same format) with feature unpack. + */ + virtual int + lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; + + + /* + * Iterator factory, for current query evaluation framework. + */ + virtual search::queryeval::SearchIterator * + createIterator(const fef::TermFieldMatchDataArray &matchData) const override; }; } // namespace fakedata } // namespace search + diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.h index acc28217d09..c4f3e27c4ac 100644 --- a/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.h +++ b/searchlib/src/vespa/searchlib/test/fakedata/fakememtreeocc.h @@ -9,8 +9,11 @@ #include <vespa/searchlib/bitcompression/compression.h> #include <vespa/searchlib/bitcompression/posocccompression.h> -namespace search { -namespace fakedata { +namespace search +{ + +namespace fakedata +{ class FakeMemTreeOccMgr : public FakeWord::RandomizedWriter { @@ -35,9 +38,12 @@ public: PostingIdx(NodeAllocator &allocator) : _tree(), _iterator(_tree.getRoot(), allocator) - {} + { + } - void clear() { + void + clear(void) + { _tree.clear(_iterator.getAllocator()); _iterator = _tree.begin(_iterator.getAllocator()); } @@ -58,7 +64,8 @@ public: _features(), _removal(true), _seq(0) - {} + { + } PendingOp(uint32_t wordIdx, uint32_t docId, EntryRef features) : _wordIdx(wordIdx), @@ -66,15 +73,42 @@ public: _features(features), _removal(false), _seq(0) - {} + { + } - void setSeq(uint32_t seq) { _seq = seq; } - uint32_t getWordIdx(void) const { return _wordIdx; } - uint32_t getDocId(void) const { return _docId; } - EntryRef getFeatureRef(void) const { return _features; } - bool getRemove() const { return _removal; } + void + setSeq(uint32_t seq) + { + _seq = seq; + } + + uint32_t + getWordIdx(void) const + { + return _wordIdx; + } + + uint32_t + getDocId(void) const + { + return _docId; + } - bool operator<(const PendingOp &rhs) const { + EntryRef + getFeatureRef(void) const + { + return _features; + } + + bool + getRemove(void) const + { + return _removal; + } + + bool + operator<(const PendingOp &rhs) const + { if (_wordIdx != rhs._wordIdx) return _wordIdx < rhs._wordIdx; if (_docId != rhs._docId) @@ -91,19 +125,42 @@ public: FeatureStore _featureStore; FakeMemTreeOccMgr(const Schema &schema); - ~FakeMemTreeOccMgr(); - - void freeze(); - void transferHoldLists(); - void incGeneration(); - void trimHoldLists(); - void sync(); - void add(uint32_t wordIdx, index::DocIdAndFeatures &features) override; - void remove(uint32_t wordIdx, uint32_t docId) override; - void sortUnflushed(); - void flush(); - void compactTrees(); - void finalize(); + + virtual + ~FakeMemTreeOccMgr(void); + + void + freeze(void); + + void + transferHoldLists(void); + + void + incGeneration(void); + + void + trimHoldLists(void); + + void + sync(void); + + virtual void + add(uint32_t wordIdx, index::DocIdAndFeatures &features) override; + + virtual void + remove(uint32_t wordIdx, uint32_t docId) override; + + void + sortUnflushed(void); + + void + flush(void); + + void + compactTrees(void); + + void + finalize(void); }; @@ -117,22 +174,33 @@ public: FakeMemTreeOccMgr _mgr; FakeMemTreeOccFactory(const Schema &schema); - ~FakeMemTreeOccFactory(); - FakePosting::SP make(const FakeWord &fw) override; - void setup(const std::vector<const FakeWord *> &fws) override; + virtual + ~FakeMemTreeOccFactory(void); + + virtual FakePosting::SP + make(const FakeWord &fw) override; + + virtual void + setup(const std::vector<const FakeWord *> &fws) override; }; class FakeMemTreeOcc2Factory : public FakeMemTreeOccFactory { public: FakeMemTreeOcc2Factory(const Schema &schema); - ~FakeMemTreeOcc2Factory(); - FakePosting::SP make(const FakeWord &fw) override; - void setup(const std::vector<const FakeWord *> &fws) override; + virtual + ~FakeMemTreeOcc2Factory(void); + + virtual FakePosting::SP + make(const FakeWord &fw) override; + + virtual void + setup(const std::vector<const FakeWord *> &fws) override; }; + /* * Updateable memory tree format. */ @@ -167,18 +235,51 @@ public: const FakeMemTreeOccMgr &mgr, const char *suffix); - ~FakeMemTreeOcc(); + ~FakeMemTreeOcc(void); + + static void + forceLink(void); + + /* + * Size of posting list, in bits. + */ + size_t bitSize(void) const override; + + virtual bool hasWordPositions(void) const override; + + /* + * Single posting list performance, without feature unpack. + */ + virtual int + lowLevelSinglePostingScan(void) const override; - static void forceLink(); - size_t bitSize() const override; - bool hasWordPositions() const override; - int lowLevelSinglePostingScan() const override; - int lowLevelSinglePostingScanUnpack() const override; - int lowLevelAndPairPostingScan(const FakePosting &rhs) const override; - int lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; - queryeval::SearchIterator *createIterator(const fef::TermFieldMatchDataArray &matchData) const override; + /* + * Single posting list performance, with feature unpack. + */ + virtual int + lowLevelSinglePostingScanUnpack(void) const override; + + /* + * Two posting lists performance (same format) without feature unpack. + */ + virtual int + lowLevelAndPairPostingScan(const FakePosting &rhs) const override; + + /* + * Two posting lists performance (same format) with feature unpack. + */ + virtual int + lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; + + + /* + * Iterator factory, for current query evaluation framework. + */ + virtual search::queryeval::SearchIterator * + createIterator(const fef::TermFieldMatchDataArray &matchData) const override; }; } // namespace fakedata } // namespace search + diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.h index f88df381d92..5e146b5705a 100644 --- a/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.h +++ b/searchlib/src/vespa/searchlib/test/fakedata/fakezcbfilterocc.h @@ -4,9 +4,11 @@ #include "fakeword.h" #include "fakeposting.h" -namespace search { +namespace search +{ -namespace fakedata { +namespace fakedata +{ /* * YST style compression of docid list. @@ -20,19 +22,52 @@ private: size_t _bitSize; public: FakeZcbFilterOcc(const FakeWord &fw); - ~FakeZcbFilterOcc(); - static void forceLink(); + ~FakeZcbFilterOcc(void); + + static void + forceLink(void); + + /* + * Size of posting list, in bits. + */ + size_t bitSize(void) const override; + + virtual bool hasWordPositions(void) const override; + + /* + * Single posting list performance, without feature unpack. + */ + virtual int + lowLevelSinglePostingScan(void) const override; - size_t bitSize() const override; - bool hasWordPositions() const override; - int lowLevelSinglePostingScan() const override; - int lowLevelSinglePostingScanUnpack() const override; - int lowLevelAndPairPostingScan(const FakePosting &rhs) const override; - int lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; - queryeval::SearchIterator *createIterator(const fef::TermFieldMatchDataArray &matchData) const override; + /* + * Single posting list performance, with feature unpack. + */ + virtual int + lowLevelSinglePostingScanUnpack(void) const override; + + /* + * Two posting lists performance (same format) without feature unpack. + */ + virtual int + lowLevelAndPairPostingScan(const FakePosting &rhs) const override; + + /* + * Two posting lists performance (same format) with feature unpack. + */ + virtual int + lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; + + + /* + * Iterator factory, for current query evaluation framework. + */ + virtual search::queryeval::SearchIterator * + createIterator(const fef::TermFieldMatchDataArray &matchData) const override; }; } // namespace fakedata } // namespace search + diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.cpp b/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.cpp index ee9bed6ba02..dfd47889513 100644 --- a/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.cpp +++ b/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.cpp @@ -1,8 +1,16 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/fastos/fastos.h> +#include <vespa/log/log.h> +LOG_SETUP(".fakezcfilterocc"); #include "fakezcfilterocc.h" -#include "fpfactory.h" +#include <vespa/searchlib/bitcompression/compression.h> +#include <vespa/searchlib/bitcompression/posocccompression.h> #include <vespa/searchlib/diskindex/zcposocciterators.h> +#include <vespa/searchlib/index/docidandfeatures.h> +#include <vespa/searchlib/index/postinglistcounts.h> +#include "fpfactory.h" + using search::fef::TermFieldMatchData; using search::fef::TermFieldMatchDataArray; @@ -18,9 +26,11 @@ using search::bitcompression::FeatureEncodeContext; using search::ComprFileWriteContext; using namespace search::diskindex; -namespace search { +namespace search +{ -namespace fakedata { +namespace fakedata +{ #define L1SKIPSTRIDE 16 @@ -759,8 +769,10 @@ class FakeZcSkipFilterOcc : public FakeZcFilterOcc public: FakeZcSkipFilterOcc(const FakeWord &fw); - ~FakeZcSkipFilterOcc(); - SearchIterator *createIterator(const TermFieldMatchDataArray &matchData) const override; + ~FakeZcSkipFilterOcc(void); + + virtual SearchIterator * + createIterator(const TermFieldMatchDataArray &matchData) const override; }; static FPFactoryInit @@ -1372,11 +1384,17 @@ class FakeEGCompr64PosOcc : public FakeZcFilterOcc { public: FakeEGCompr64PosOcc(const FakeWord &fw); - ~FakeEGCompr64PosOcc(); + + ~FakeEGCompr64PosOcc(void); + void setup(const FakeWord &fw); - size_t bitSize() const override; - bool hasWordPositions() const override; - SearchIterator *createIterator(const TermFieldMatchDataArray &matchData) const override; + + size_t bitSize(void) const override; + + virtual bool hasWordPositions(void) const override; + + virtual SearchIterator * + createIterator(const TermFieldMatchDataArray &matchData) const override; }; @@ -1470,7 +1488,7 @@ FakeEGCompr64PosOcc<bigEndian>::setup(const FakeWord &fw) template <bool bigEndian> size_t -FakeEGCompr64PosOcc<bigEndian>::bitSize() const +FakeEGCompr64PosOcc<bigEndian>::bitSize(void) const { return _compressedBits; } @@ -1478,7 +1496,7 @@ FakeEGCompr64PosOcc<bigEndian>::bitSize() const template <bool bigEndian> bool -FakeEGCompr64PosOcc<bigEndian>::hasWordPositions() const +FakeEGCompr64PosOcc<bigEndian>::hasWordPositions(void) const { return true; } @@ -1499,11 +1517,17 @@ class FakeEG2Compr64PosOcc : public FakeZcFilterOcc { public: FakeEG2Compr64PosOcc(const FakeWord &fw); - ~FakeEG2Compr64PosOcc(); + + ~FakeEG2Compr64PosOcc(void); + void setup(const FakeWord &fw); - size_t bitSize() const override; - bool hasWordPositions() const override; - SearchIterator *createIterator(const fef::TermFieldMatchDataArray &matchData) const override; + + size_t bitSize(void) const override; + + virtual bool hasWordPositions(void) const override; + + virtual SearchIterator * + createIterator(const fef::TermFieldMatchDataArray &matchData) const override; }; @@ -1626,11 +1650,15 @@ class FakeZcSkipPosOcc : public FakeZcFilterOcc search::index::PostingListCounts _counts; public: FakeZcSkipPosOcc(const FakeWord &fw); - ~FakeZcSkipPosOcc(); - size_t bitSize() const override; - bool hasWordPositions() const override; - SearchIterator *createIterator(const TermFieldMatchDataArray &matchData) const override; + ~FakeZcSkipPosOcc(void); + + size_t bitSize(void) const override; + + virtual bool hasWordPositions(void) const override; + + virtual SearchIterator * + createIterator(const TermFieldMatchDataArray &matchData) const override; }; @@ -1645,14 +1673,14 @@ FakeZcSkipPosOcc<bigEndian>::FakeZcSkipPosOcc(const FakeWord &fw) template <bool bigEndian> -FakeZcSkipPosOcc<bigEndian>::~FakeZcSkipPosOcc() +FakeZcSkipPosOcc<bigEndian>::~FakeZcSkipPosOcc(void) { } template <bool bigEndian> size_t -FakeZcSkipPosOcc<bigEndian>::bitSize() const +FakeZcSkipPosOcc<bigEndian>::bitSize(void) const { return _compressedBits - _l1SkipSize - _l2SkipSize - _l3SkipSize - _l4SkipSize; @@ -1661,7 +1689,7 @@ FakeZcSkipPosOcc<bigEndian>::bitSize() const template <bool bigEndian> bool -FakeZcSkipPosOcc<bigEndian>::hasWordPositions() const +FakeZcSkipPosOcc<bigEndian>::hasWordPositions(void) const { return true; } @@ -1686,10 +1714,15 @@ class FakeZc2SkipPosOcc : public FakeZcFilterOcc search::index::PostingListCounts _counts; public: FakeZc2SkipPosOcc(const FakeWord &fw); - ~FakeZc2SkipPosOcc(); - size_t bitSize() const override; - bool hasWordPositions() const override; - SearchIterator *createIterator(const TermFieldMatchDataArray &matchData) const override; + + ~FakeZc2SkipPosOcc(void); + + size_t bitSize(void) const override; + + virtual bool hasWordPositions(void) const override; + + virtual SearchIterator * + createIterator(const TermFieldMatchDataArray &matchData) const override; }; @@ -1704,14 +1737,14 @@ FakeZc2SkipPosOcc<bigEndian>::FakeZc2SkipPosOcc(const FakeWord &fw) template <bool bigEndian> -FakeZc2SkipPosOcc<bigEndian>::~FakeZc2SkipPosOcc() +FakeZc2SkipPosOcc<bigEndian>::~FakeZc2SkipPosOcc(void) { } template <bool bigEndian> size_t -FakeZc2SkipPosOcc<bigEndian>::bitSize() const +FakeZc2SkipPosOcc<bigEndian>::bitSize(void) const { return _compressedBits - _l1SkipSize - _l2SkipSize - _l3SkipSize - _l4SkipSize; @@ -1720,7 +1753,7 @@ FakeZc2SkipPosOcc<bigEndian>::bitSize() const template <bool bigEndian> bool -FakeZc2SkipPosOcc<bigEndian>::hasWordPositions() const +FakeZc2SkipPosOcc<bigEndian>::hasWordPositions(void) const { return true; } diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.h b/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.h index 5d81e37001e..65ac3ead5d1 100644 --- a/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.h +++ b/searchlib/src/vespa/searchlib/test/fakedata/fakezcfilterocc.h @@ -1,14 +1,17 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once + #include "fakeword.h" #include "fakeposting.h" #include <vespa/searchlib/bitcompression/compression.h> #include <vespa/searchlib/bitcompression/posocccompression.h> -namespace search { +namespace search +{ -namespace fakedata { +namespace fakedata +{ /* * YST style compression of docid list. @@ -35,29 +38,70 @@ protected: void setup(const FakeWord &fw, bool doFeatures, bool dynamicK); template <bool bigEndian> - void setupT(const FakeWord &fw, bool doFeatures, bool dynamicK); + void + setupT(const FakeWord &fw, bool doFeatures, bool dynamicK); public: FakeZcFilterOcc(const FakeWord &fw); - FakeZcFilterOcc(const FakeWord &fw, bool bigEndian, const char *nameSuffix); - ~FakeZcFilterOcc(); - - static void forceLink(); - - size_t bitSize() const override; - bool hasWordPositions() const override; - size_t skipBitSize() const override; - size_t l1SkipBitSize() const override; - size_t l2SkipBitSize() const override; - size_t l3SkipBitSize() const override; - size_t l4SkipBitSize() const override; - int lowLevelSinglePostingScan() const override; - int lowLevelSinglePostingScanUnpack() const override; - int lowLevelAndPairPostingScan(const FakePosting &rhs) const override; - int lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; - queryeval::SearchIterator *createIterator(const fef::TermFieldMatchDataArray &matchData) const override; + + FakeZcFilterOcc(const FakeWord &fw, + bool bigEndian, + const char *nameSuffix); + + ~FakeZcFilterOcc(void); + + static void + forceLink(void); + + /* + * Size of posting list, in bits. + */ + size_t bitSize(void) const override; + + virtual bool hasWordPositions(void) const override; + + /* + * Size of posting skip list, in bits. + */ + size_t skipBitSize(void) const override; + size_t l1SkipBitSize(void) const override; + size_t l2SkipBitSize(void) const override; + size_t l3SkipBitSize(void) const override; + size_t l4SkipBitSize(void) const override; + + /* + * Single posting list performance, without feature unpack. + */ + virtual int + lowLevelSinglePostingScan(void) const override; + + /* + * Single posting list performance, with feature unpack. + */ + virtual int + lowLevelSinglePostingScanUnpack(void) const override; + + /* + * Two posting lists performance (same format) without feature unpack. + */ + virtual int + lowLevelAndPairPostingScan(const FakePosting &rhs) const override; + + /* + * Two posting lists performance (same format) with feature unpack. + */ + virtual int + lowLevelAndPairPostingScanUnpack(const FakePosting &rhs) const override; + + + /* + * Iterator factory, for current query evaluation framework. + */ + virtual search::queryeval::SearchIterator * + createIterator(const fef::TermFieldMatchDataArray &matchData) const override; }; } // namespace fakedata } // namespace search + diff --git a/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.h b/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.h index aa67eb1b933..bf02e815da8 100644 --- a/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.h +++ b/searchlib/src/vespa/searchlib/test/fakedata/fpfactory.h @@ -41,7 +41,9 @@ public: (void) schema; } - FakePosting::SP make(const FakeWord &fw) override { + virtual FakePosting::SP + make(const FakeWord &fw) override + { return FakePosting::SP(new P(fw)); } }; diff --git a/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.h b/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.h index 9eccdbaff0e..a41b6c27c5d 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.h +++ b/searchlib/src/vespa/searchlib/transactionlog/nosyncproxy.h @@ -4,16 +4,24 @@ #include "syncproxy.h" -namespace search { -namespace transactionlog { +namespace search +{ +namespace transactionlog +{ class NoSyncProxy : public SyncProxy { public: - NoSyncProxy(); - ~NoSyncProxy(); - void sync(SerialNum syncTo) override; + NoSyncProxy(void); + + virtual + ~NoSyncProxy(void); + + virtual void + sync(SerialNum syncTo) override; }; } + } + diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogclient.h b/searchlib/src/vespa/searchlib/transactionlog/translogclient.h index 802933b7d81..e219f5cffbc 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/translogclient.h +++ b/searchlib/src/vespa/searchlib/transactionlog/translogclient.h @@ -66,10 +66,10 @@ public: Subscriber(const vespalib::string & domain, TransLogClient & tlc, Callback & callBack); bool subscribe(const SerialNum & from); - ~Subscriber(); - RPC::Result visit(const Packet & packet) override { return _callback.receive(packet); } - void inSync() override { _callback.inSync(); } - void eof() override { _callback.eof(); } + virtual ~Subscriber(); + virtual RPC::Result visit(const Packet & packet) override { return _callback.receive(packet); } + virtual void inSync() override { _callback.inSync(); } + virtual void eof() override { _callback.eof(); } private: Callback & _callback; }; diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h index 105a6ca643b..8e64b17ecb4 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h +++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h @@ -41,7 +41,7 @@ public: uint64_t setDomainPartSize(); DomainStats getDomainStats() const; - void commit(const vespalib::string & domainName, const Packet & packet) override; + virtual void commit(const vespalib::string & domainName, const Packet & packet) override; class Session @@ -56,8 +56,8 @@ public: }; private: - bool onStop() override; - void run() override; + virtual bool onStop() override; + virtual void run() override; void exportRPC(FRT_Supervisor & supervisor); void relayToThreadRPC(FRT_RPCRequest *req); diff --git a/searchlib/src/vespa/searchlib/util/rand48.h b/searchlib/src/vespa/searchlib/util/rand48.h index 6d27d179a74..d8bfa683f15 100644 --- a/searchlib/src/vespa/searchlib/util/rand48.h +++ b/searchlib/src/vespa/searchlib/util/rand48.h @@ -1,9 +1,9 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright (C) 2003 Fast Search & Transfer ASA +// Copyright (C) 2003 Overture Services Norway AS #pragma once -#include <cstdlib> -#include <cstdint> namespace search { @@ -26,14 +26,14 @@ public: { srand48(0x1234abcd); }; - void iterate() { + void iterate(void) { _state = (UINT64_C(0x5DEECE66D) * _state + 0xb) & UINT64_C(0xFFFFFFFFFFFF); } /* * Return value from 0 to 2^31 - 1 */ - long lrand48() { + long lrand48(void) { iterate(); return static_cast<long>(_state >> 17); } |