summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-10-14 10:04:20 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-10-14 10:04:20 +0000
commit760768ad9a5f376275b06ed38a516e80cba1aa65 (patch)
tree0e862282256eb77183a40f545fcf8faed03d8470 /searchlib
parent5c2bff00c1b5e0aea4bee32f43dd9ecda8b2ff7f (diff)
Add serialisation for sorting to documentmetastore.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchcommon/common/growstrategy.h2
-rw-r--r--searchlib/src/vespa/searchcommon/common/iblobconverter.h2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/stringbase.cpp16
-rw-r--r--searchlib/src/vespa/searchlib/common/sortspec.cpp12
-rw-r--r--searchlib/src/vespa/searchlib/common/sortspec.h2
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;