summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-04-11 11:31:10 +0200
committerGitHub <noreply@github.com>2022-04-11 11:31:10 +0200
commite5b9d3a634e2d8a1ecf783ff69c129e48732afad (patch)
treefdb657851b89cfd81c6b86d35b3da024b376b46a /searchlib
parent65dc21685f2286a30c82c7d14c9fe5fe5c42d412 (diff)
parentfafb7ede33f4ea448057d6d4d6a0e3ae412be80a (diff)
Merge pull request #22073 from vespa-engine/toregge/trim-down-multivalue-value-and-multivalue-weighted-value
Trim down search::multivalue::Value and search::multivalue::WeightedValue.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/flagattribute.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/flagattribute.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/load_utils.h3
-rw-r--r--searchlib/src/vespa/searchlib/attribute/load_utils.hpp6
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h3
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp7
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h3
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multivalueattribute.h3
-rw-r--r--searchlib/src/vespa/searchlib/features/dotproductfeature.cpp6
10 files changed, 22 insertions, 17 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp
index 17a898765d3..9a331295fd0 100644
--- a/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/flagattribute.cpp
@@ -73,7 +73,7 @@ template <typename B>
bool
FlagAttributeT<B>::onLoadEnumerated(ReaderBase &attrReader)
{
- typedef typename B::WType::ValueType TT;
+ using TT = multivalue::ValueType_t<typename B::WType>;
uint32_t numDocs = attrReader.getNumIdx() - 1;
uint64_t numValues = attrReader.getNumValues();
@@ -133,7 +133,7 @@ void FlagAttributeT<B>::setNewValues(DocId doc, const std::vector<typename B::WT
template <typename B>
void
-FlagAttributeT<B>::setNewBVValue(DocId doc, typename B::WType::ValueType value)
+FlagAttributeT<B>::setNewBVValue(DocId doc, multivalue::ValueType_t<typename B::WType> value)
{
uint32_t offset = getOffset(value);
BitVector * bv = _bitVectors[offset];
diff --git a/searchlib/src/vespa/searchlib/attribute/flagattribute.h b/searchlib/src/vespa/searchlib/attribute/flagattribute.h
index 24bec517eb0..e47045f87d8 100644
--- a/searchlib/src/vespa/searchlib/attribute/flagattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/flagattribute.h
@@ -22,7 +22,7 @@ private:
void setNewValues(DocId doc, const std::vector<typename B::WType> & values) override;
public:
- void setNewBVValue(DocId doc, typename B::WType::ValueType value);
+ void setNewBVValue(DocId doc, multivalue::ValueType_t<typename B::WType> value);
private:
bool onAddDoc(DocId doc) override;
diff --git a/searchlib/src/vespa/searchlib/attribute/load_utils.h b/searchlib/src/vespa/searchlib/attribute/load_utils.h
index ec4f4862ae1..8801b0fe5a4 100644
--- a/searchlib/src/vespa/searchlib/attribute/load_utils.h
+++ b/searchlib/src/vespa/searchlib/attribute/load_utils.h
@@ -6,6 +6,7 @@
#include "attributevector.h"
#include "readerbase.h"
#include <vespa/vespalib/util/arrayref.h>
+#include <vespa/searchcommon/attribute/multi_value_traits.h>
namespace vespalib::datastore {
@@ -46,7 +47,7 @@ template <class MvMapping, class Saver>
uint32_t
loadFromEnumeratedMultiValue(MvMapping &mapping,
ReaderBase &attrReader,
- vespalib::ConstArrayRef<atomic_utils::NonAtomicValue_t<typename MvMapping::MultiValueType::ValueType>> enumValueToValueMap,
+ vespalib::ConstArrayRef<atomic_utils::NonAtomicValue_t<multivalue::ValueType_t<typename MvMapping::MultiValueType>>> enumValueToValueMap,
vespalib::ConstArrayRef<uint32_t> enum_value_remapping,
Saver saver) __attribute((noinline));
diff --git a/searchlib/src/vespa/searchlib/attribute/load_utils.hpp b/searchlib/src/vespa/searchlib/attribute/load_utils.hpp
index 76b19f40ced..b8d84944369 100644
--- a/searchlib/src/vespa/searchlib/attribute/load_utils.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/load_utils.hpp
@@ -11,13 +11,13 @@ template <class MvMapping, class Saver>
uint32_t
loadFromEnumeratedMultiValue(MvMapping & mapping,
ReaderBase & attrReader,
- vespalib::ConstArrayRef<atomic_utils::NonAtomicValue_t<typename MvMapping::MultiValueType::ValueType>> enumValueToValueMap,
+ vespalib::ConstArrayRef<atomic_utils::NonAtomicValue_t<multivalue::ValueType_t<typename MvMapping::MultiValueType>>> enumValueToValueMap,
vespalib::ConstArrayRef<uint32_t> enum_value_remapping,
Saver saver)
{
mapping.prepareLoadFromMultiValue();
using MultiValueType = typename MvMapping::MultiValueType;
- using ValueType = typename MultiValueType::ValueType;
+ using ValueType = multivalue::ValueType_t<MultiValueType>;
using NonAtomicValueType = atomic_utils::NonAtomicValue_t<ValueType>;
std::vector<MultiValueType> indices;
uint32_t numDocs = attrReader.getNumIdx() - 1;
@@ -36,7 +36,7 @@ loadFromEnumeratedMultiValue(MvMapping & mapping,
if (!enum_value_remapping.empty()) {
enumValue = enum_value_remapping[enumValue];
}
- int32_t weight = MultiValueType::_hasWeight ? attrReader.getNextWeight() : 1;
+ int32_t weight = multivalue::is_WeightedValue_v<MultiValueType> ? attrReader.getNextWeight() : 1;
if constexpr (std::is_same_v<ValueType, NonAtomicValueType>) {
indices.emplace_back(enumValueToValueMap[enumValue], weight);
} else {
diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp
index 6e35a352b75..d48e119a544 100644
--- a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.cpp
@@ -107,7 +107,7 @@ onSave(IAttributeSaveTarget &saveTarget)
{
bool compaction_broke_save = false;
CountWriter countWriter(saveTarget);
- WeightWriter<MultiValueType::_hasWeight> weightWriter(saveTarget);
+ WeightWriter<multivalue::is_WeightedValue_v<MultiValueType>> weightWriter(saveTarget);
DatWriter datWriter(saveTarget, _enumSaver.get_enumerator(),
[this]() { return compaction_interferred(); });
_enumSaver.writeUdat(saveTarget);
diff --git a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h
index 7d635cfa755..137fcd24794 100644
--- a/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h
+++ b/searchlib/src/vespa/searchlib/attribute/multienumattributesaver.h
@@ -4,6 +4,7 @@
#include "multivalueattributesaver.h"
#include "enumattributesaver.h"
+#include <vespa/searchcommon/attribute/multi_value_traits.h>
namespace search {
@@ -18,7 +19,7 @@ class MultiValueEnumAttributeSaver : public MultiValueAttributeSaver
{
using Parent = MultiValueAttributeSaver;
using MultiValueType = MultiValueT;
- using ValueType = typename MultiValueType::ValueType;
+ using ValueType = multivalue::ValueType_t<MultiValueType>;
using GenerationHandler = vespalib::GenerationHandler;
using Parent::_frozenIndices;
using MultiValueMapping = attribute::MultiValueMapping<MultiValueType>;
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp
index c458cb2d1cc..eada6484a0d 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.cpp
@@ -31,8 +31,9 @@ public:
void
writeValues(vespalib::ConstArrayRef<MultiValueT> values) {
for (const MultiValueT &valueRef : values) {
- typename MultiValueT::ValueType value(valueRef);
- _datWriter->write(&value, sizeof(typename MultiValueT::ValueType));
+ using ValueType = multivalue::ValueType_t<MultiValueT>;
+ ValueType value(valueRef);
+ _datWriter->write(&value, sizeof(ValueType));
}
}
};
@@ -63,7 +64,7 @@ MultiValueNumericAttributeSaver<MultiValueT>::
onSave(IAttributeSaveTarget &saveTarget)
{
CountWriter countWriter(saveTarget);
- WeightWriter<MultiValueType::_hasWeight> weightWriter(saveTarget);
+ WeightWriter<multivalue::is_WeightedValue_v<MultiValueType>> weightWriter(saveTarget);
DatWriter datWriter(saveTarget);
for (uint32_t docId = 0; docId < _frozenIndices.size(); ++docId) {
diff --git a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h
index 8000de97940..df188d5ca65 100644
--- a/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h
+++ b/searchlib/src/vespa/searchlib/attribute/multinumericattributesaver.h
@@ -3,6 +3,7 @@
#pragma once
#include "multivalueattributesaver.h"
+#include <vespa/searchcommon/attribute/multi_value_traits.h>
namespace search {
@@ -17,7 +18,7 @@ class MultiValueNumericAttributeSaver : public MultiValueAttributeSaver
{
using Parent = MultiValueAttributeSaver;
using MultiValueType = MultiValueT;
- using ValueType = typename MultiValueType::ValueType;
+ using ValueType = multivalue::ValueType_t<MultiValueType>;
using GenerationHandler = vespalib::GenerationHandler;
using Parent::_frozenIndices;
using MultiValueMapping = attribute::MultiValueMapping<MultiValueType>;
diff --git a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h
index 848d5547672..9eb1a06d042 100644
--- a/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/multivalueattribute.h
@@ -7,6 +7,7 @@
#include "multi_value_mapping.h"
#include <vespa/searchcommon/attribute/i_multi_value_attribute.h>
#include <vespa/searchcommon/attribute/i_multi_value_read_view.h>
+#include <vespa/searchcommon/attribute/multi_value_traits.h>
namespace search {
@@ -28,7 +29,7 @@ protected:
using MultiValueType = M;
using MultiValueMapping = attribute::MultiValueMapping<MultiValueType>;
- typedef typename MultiValueType::ValueType ValueType;
+ using ValueType = multivalue::ValueType_t<MultiValueType>;
typedef std::vector<MultiValueType> ValueVector;
using MultiValueArrayRef = vespalib::ConstArrayRef<MultiValueType>;
typedef typename ValueVector::iterator ValueVectorIterator;
diff --git a/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp b/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp
index 06e6e9157ae..b18c6687561 100644
--- a/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp
@@ -274,9 +274,9 @@ template <typename BaseType>
void DotProductExecutorBase<BaseType>::execute(uint32_t docId) {
auto values = getAttributeValues(docId);
size_t commonRange = std::min(values.size(), _queryVector.size());
- static_assert(std::is_same<typename AT::ValueType, BaseType>::value);
+ static_assert(std::is_same_v<multivalue::ValueType_t<AT>, BaseType>);
outputs().set_number(0, _multiplier.dotProduct(
- &_queryVector[0], reinterpret_cast<const typename AT::ValueType *>(values.data()), commonRange));
+ &_queryVector[0], reinterpret_cast<const multivalue::ValueType_t<AT> *>(values.data()), commonRange));
}
template <typename A>
@@ -396,7 +396,7 @@ constexpr void sanity_check_reinterpret_cast_compatibility() {
static_assert(IsNonWeightedType<AttributeValueType>::value);
static_assert(sizeof(BaseType) == sizeof(AttributeValueType));
static_assert(sizeof(BaseType) == sizeof(FillerValueType));
- static_assert(std::is_same<BaseType, typename AttributeValueType::ValueType>::value);
+ static_assert(std::is_same_v<BaseType, multivalue::ValueType_t<AttributeValueType>>);
}
}