diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-10-14 10:04:20 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-10-14 10:04:20 +0000 |
commit | 760768ad9a5f376275b06ed38a516e80cba1aa65 (patch) | |
tree | 0e862282256eb77183a40f545fcf8faed03d8470 /searchlib | |
parent | 5c2bff00c1b5e0aea4bee32f43dd9ecda8b2ff7f (diff) |
Add serialisation for sorting to documentmetastore.
Diffstat (limited to 'searchlib')
5 files changed, 16 insertions, 18 deletions
diff --git a/searchlib/src/vespa/searchcommon/common/growstrategy.h b/searchlib/src/vespa/searchcommon/common/growstrategy.h index bc04047aa3c..8766989ded0 100644 --- a/searchlib/src/vespa/searchcommon/common/growstrategy.h +++ b/searchlib/src/vespa/searchcommon/common/growstrategy.h @@ -24,7 +24,7 @@ public: } static GrowStrategy make(uint32_t docsInitialCapacity, float docsGrowFactor, uint32_t docsGrowDelta) { - return GrowStrategy(docsInitialCapacity, docsGrowFactor, docsGrowDelta, 0, 0.2); + return {docsInitialCapacity, docsGrowFactor, docsGrowDelta, 0, 0.2}; } float getMultiValueAllocGrowFactor() const { return _multiValueAllocGrowFactor; } diff --git a/searchlib/src/vespa/searchcommon/common/iblobconverter.h b/searchlib/src/vespa/searchcommon/common/iblobconverter.h index 6581c3e5ccb..4cb79a2547c 100644 --- a/searchlib/src/vespa/searchcommon/common/iblobconverter.h +++ b/searchlib/src/vespa/searchcommon/common/iblobconverter.h @@ -13,7 +13,7 @@ public: using SP = std::shared_ptr<BlobConverter>; using UP = std::unique_ptr<BlobConverter>; using ConstBufferRef = vespalib::ConstBufferRef; - virtual ~BlobConverter() { } + virtual ~BlobConverter() = default; ConstBufferRef convert(const ConstBufferRef & src) const { return onConvert(src); } private: virtual ConstBufferRef onConvert(const ConstBufferRef & src) const = 0; diff --git a/searchlib/src/vespa/searchlib/attribute/stringbase.cpp b/searchlib/src/vespa/searchlib/attribute/stringbase.cpp index b262b74a468..d27c61d6ff0 100644 --- a/searchlib/src/vespa/searchlib/attribute/stringbase.cpp +++ b/searchlib/src/vespa/searchlib/attribute/stringbase.cpp @@ -6,11 +6,9 @@ #include "readerbase.h" #include "enum_store_loaders.h" #include <vespa/searchlib/common/sort.h> -#include <vespa/document/fieldvalue/fieldvalue.h> #include <vespa/searchlib/query/query_term_ucs4.h> #include <vespa/searchcommon/attribute/config.h> #include <vespa/vespalib/locale/c.h> -#include <vespa/vespalib/util/array.hpp> #include <vespa/log/log.h> LOG_SETUP(".searchlib.attribute.stringbase"); @@ -61,7 +59,7 @@ StringAttribute::~StringAttribute() = default; uint32_t StringAttribute::get(DocId doc, WeightedInt * v, uint32_t sz) const { - WeightedConstChar * s = new WeightedConstChar[sz]; + auto * s = new WeightedConstChar[sz]; uint32_t n = static_cast<const AttributeVector *>(this)->get(doc, s, sz); for(uint32_t i(0),m(std::min(n,sz)); i<m; i++) { v[i] = WeightedInt(strtoll(s[i].getValue(), nullptr, 0), s[i].getWeight()); @@ -73,7 +71,7 @@ StringAttribute::get(DocId doc, WeightedInt * v, uint32_t sz) const uint32_t StringAttribute::get(DocId doc, WeightedFloat * v, uint32_t sz) const { - WeightedConstChar * s = new WeightedConstChar[sz]; + auto * s = new WeightedConstChar[sz]; uint32_t n = static_cast<const AttributeVector *>(this)->get(doc, s, sz); for(uint32_t i(0),m(std::min(n,sz)); i<m; i++) { v[i] = WeightedFloat(vespalib::locale::c::strtod(s[i].getValue(), nullptr), s[i].getWeight()); @@ -114,11 +112,11 @@ StringAttribute::get(DocId doc, largeint_t * v, uint32_t sz) const long StringAttribute::onSerializeForAscendingSort(DocId doc, void * serTo, long available, const common::BlobConverter * bc) const { - unsigned char *dst = static_cast<unsigned char *>(serTo); + auto *dst = static_cast<unsigned char *>(serTo); const char *value(get(doc)); int size = strlen(value) + 1; vespalib::ConstBufferRef buf(value, size); - if (bc != 0) { + if (bc != nullptr) { buf = bc->convert(buf); } if (available >= (long)buf.size()) { @@ -133,15 +131,15 @@ long StringAttribute::onSerializeForDescendingSort(DocId doc, void * serTo, long available, const common::BlobConverter * bc) const { (void) bc; - unsigned char *dst = static_cast<unsigned char *>(serTo); + auto *dst = static_cast<unsigned char *>(serTo); const char *value(get(doc)); int size = strlen(value) + 1; vespalib::ConstBufferRef buf(value, size); - if (bc != 0) { + if (bc != nullptr) { buf = bc->convert(buf); } if (available >= (long)buf.size()) { - const uint8_t * src(static_cast<const uint8_t *>(buf.data())); + const auto * src(static_cast<const uint8_t *>(buf.data())); for (size_t i(0), m(buf.size()); i < m; ++i) { dst[i] = 0xff - src[i]; } diff --git a/searchlib/src/vespa/searchlib/common/sortspec.cpp b/searchlib/src/vespa/searchlib/common/sortspec.cpp index 99def167460..e12f758e2d2 100644 --- a/searchlib/src/vespa/searchlib/common/sortspec.cpp +++ b/searchlib/src/vespa/searchlib/common/sortspec.cpp @@ -36,8 +36,8 @@ LowercaseConverter::onConvert(const ConstBufferRef & src) const return {_buffer.begin(), _buffer.size()}; } -SortInfo::SortInfo(const vespalib::string & field, bool ascending, const BlobConverter::SP & converter) - : _field(field), _ascending(ascending), _converter(converter) +SortInfo::SortInfo(const vespalib::string & field, bool ascending, BlobConverter::SP converter) + : _field(field), _ascending(ascending), _converter(std::move(converter)) { } SortInfo::~SortInfo() = default; @@ -72,13 +72,13 @@ SortSpec::SortSpec(const vespalib::string & spec, const ConverterFactory & ucaFa for(; (p < e) && (*p != ')'); p++); if (*p == ')') { vespalib::string strength(strengthName, p - strengthName); - push_back(SortInfo(attr, ascending, BlobConverter::SP(ucaFactory.create(locale, strength)))); + push_back(SortInfo(attr, ascending, ucaFactory.create(locale, strength))); } else { throw std::runtime_error(make_string("Missing ')' at %s attr=%s locale=%s strength=%s", p, attr.c_str(), localeName, strengthName)); } } else if (*p == ')') { vespalib::string locale(localeName, p-localeName); - push_back(SortInfo(attr, ascending, BlobConverter::SP(ucaFactory.create(locale, "")))); + push_back(SortInfo(attr, ascending, ucaFactory.create(locale, ""))); } else { throw std::runtime_error(make_string("Missing ')' or ',' at %s attr=%s locale=%s", p, attr.c_str(), localeName)); } @@ -91,7 +91,7 @@ SortSpec::SortSpec(const vespalib::string & spec, const ConverterFactory & ucaFa for(; (p < e) && (*p != ')'); p++); if (*p == ')') { vespalib::string attr(attrName, p-attrName); - push_back(SortInfo(attr, ascending, BlobConverter::SP(new LowercaseConverter()))); + push_back(SortInfo(attr, ascending, std::make_shared<LowercaseConverter>())); } else { throw std::runtime_error("Missing ')'"); } @@ -99,7 +99,7 @@ SortSpec::SortSpec(const vespalib::string & spec, const ConverterFactory & ucaFa throw std::runtime_error("Unknown func " + vespalib::string(func, p-func)); } } else { - push_back(SortInfo(funcSpec, ascending, BlobConverter::SP())); + push_back(SortInfo(funcSpec, ascending, {})); } } } diff --git a/searchlib/src/vespa/searchlib/common/sortspec.h b/searchlib/src/vespa/searchlib/common/sortspec.h index da98d791734..7a5b6fb7f90 100644 --- a/searchlib/src/vespa/searchlib/common/sortspec.h +++ b/searchlib/src/vespa/searchlib/common/sortspec.h @@ -11,7 +11,7 @@ namespace search::common { struct SortInfo { - SortInfo(const vespalib::string & field, bool ascending, const BlobConverter::SP & converter); + SortInfo(const vespalib::string & field, bool ascending, BlobConverter::SP converter); ~SortInfo(); vespalib::string _field; bool _ascending; |