diff options
4 files changed, 14 insertions, 1 deletions
diff --git a/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h b/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h index edc71591175..331e950879a 100644 --- a/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h +++ b/searchcommon/src/vespa/searchcommon/attribute/iattributevector.h @@ -11,6 +11,7 @@ namespace search { +class IDocumentWeightAttribute; class QueryTermSimple; namespace attribute { @@ -255,6 +256,13 @@ public: const SearchContextParams ¶ms) const = 0; /** + * Type-safe down-cast to an attribute supporting direct document weight iterators. + * + * @return document weight attribute or nullptr if not supported. + */ + virtual const IDocumentWeightAttribute *asDocumentWeightAttribute() const = 0; + + /** * Returns the basic type of this attribute vector. * * @return basic type diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.h b/searchlib/src/vespa/searchlib/attribute/attributevector.h index 80f2fed9f8d..08d954b974f 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributevector.h +++ b/searchlib/src/vespa/searchlib/attribute/attributevector.h @@ -503,7 +503,7 @@ public: ////// Search API // type-safe down-cast to attribute supporting direct document weight iterators - virtual const IDocumentWeightAttribute *asDocumentWeightAttribute() const; + virtual const IDocumentWeightAttribute *asDocumentWeightAttribute() const override; /** - Search for equality diff --git a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.cpp b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.cpp index f02bf78c59e..5e2973790fc 100644 --- a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.cpp +++ b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.cpp @@ -99,6 +99,10 @@ std::unique_ptr<ISearchContext> ImportedAttributeVector::createSearchContext(std return std::unique_ptr<ISearchContext>(); } +const IDocumentWeightAttribute *ImportedAttributeVector::asDocumentWeightAttribute() const { + return nullptr; +} + BasicType::Type ImportedAttributeVector::getBasicType() const { return _target_attribute->getBasicType(); } diff --git a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.h b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.h index 645f61d5aaa..95a817bac35 100644 --- a/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.h +++ b/searchlib/src/vespa/searchlib/attribute/imported_attribute_vector.h @@ -52,6 +52,7 @@ public: bool findEnum(const char * value, EnumHandle & e) const override; std::unique_ptr<ISearchContext> createSearchContext(std::unique_ptr<QueryTermSimple> term, const SearchContextParams ¶ms) const override; + const IDocumentWeightAttribute *asDocumentWeightAttribute() const override; BasicType::Type getBasicType() const override; size_t getFixedWidth() const override; CollectionType::Type getCollectionType() const override; |