diff options
6 files changed, 61 insertions, 95 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp b/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp index cdb7e1807ba..0e1cfaa3c09 100644 --- a/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp +++ b/searchlib/src/vespa/searchlib/attribute/createsinglefastsearch.cpp @@ -5,15 +5,9 @@ #include "floatbase.h" #include "defines.h" #include "singlestringattribute.h" +#include "singleboolattribute.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(".searchlib.attribute.create_single_fast_search"); #define INTPOSTING(T) SingleValueNumericPostingAttribute< ENUM_ATTRIBUTE(IntegerAttributeTemplate<T>) > #define FLOATPOSTING(T) SingleValueNumericPostingAttribute< ENUM_ATTRIBUTE(FloatingPointAttributeTemplate<T>) > @@ -27,37 +21,30 @@ AttributeFactory::createSingleFastSearch(stringref name, const Config & info) { assert(info.collectionType().type() == attribute::CollectionType::SINGLE); assert(info.fastSearch()); - AttributeVector::SP ret; switch(info.basicType().type()) { case BasicType::BOOL: + return std::make_shared<SingleBoolAttribute>(name, info.getGrowStrategy()); case BasicType::UINT2: case BasicType::UINT4: break; case BasicType::INT8: - ret.reset(new INTPOSTING(int8_t)(name, info)); - break; + return std::make_shared<INTPOSTING(int8_t)>(name, info); case BasicType::INT16: - ret.reset(new INTPOSTING(int16_t)(name, info)); - break; + return std::make_shared<INTPOSTING(int16_t)>(name, info); case BasicType::INT32: - ret.reset(new INTPOSTING(int32_t)(name, info)); - break; + return std::make_shared<INTPOSTING(int32_t)>(name, info); case BasicType::INT64: - ret.reset(new INTPOSTING(int64_t)(name, info)); - break; + return std::make_shared<INTPOSTING(int64_t)>(name, info); case BasicType::FLOAT: - ret.reset(new FLOATPOSTING(float)(name, info)); - break; + return std::make_shared<FLOATPOSTING(float)>(name, info); case BasicType::DOUBLE: - ret.reset(new FLOATPOSTING(double)(name, info)); - break; + return std::make_shared<FLOATPOSTING(double)>(name, info); case BasicType::STRING: - ret.reset(new SingleValueStringPostingAttribute(name, info)); - break; + return std::make_shared<SingleValueStringPostingAttribute>(name, info); default: break; } - return ret; + return AttributeVector::SP(); } } diff --git a/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp b/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp index 7bd96b5cbb2..a0cf47f64e0 100644 --- a/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp +++ b/searchlib/src/vespa/searchlib/attribute/createsinglestd.cpp @@ -4,16 +4,12 @@ #include "predicate_attribute.h" #include "singlesmallnumericattribute.h" #include "reference_attribute.h" -#include "attributevector.hpp" #include "singlenumericattribute.hpp" #include "singlestringattribute.h" #include "singleboolattribute.h" #include <vespa/searchlib/tensor/generic_tensor_attribute.h> #include <vespa/searchlib/tensor/dense_tensor_attribute.h> -#include <vespa/log/log.h> -LOG_SETUP(".searchlib.attribute.create_single_std"); - namespace search { using attribute::BasicType; @@ -22,55 +18,42 @@ AttributeVector::SP AttributeFactory::createSingleStd(stringref name, const Config & info) { assert(info.collectionType().type() == attribute::CollectionType::SINGLE); - AttributeVector::SP ret; switch(info.basicType().type()) { case BasicType::BOOL: - ret.reset(new SingleBoolAttribute(name, info.getGrowStrategy())); - break; + return std::make_shared<SingleBoolAttribute>(name, info.getGrowStrategy()); case BasicType::UINT2: - ret.reset(new SingleValueSemiNibbleNumericAttribute(name, info.getGrowStrategy())); - break; + return std::make_shared<SingleValueSemiNibbleNumericAttribute>(name, info.getGrowStrategy()); case BasicType::UINT4: - ret.reset(new SingleValueNibbleNumericAttribute(name, info.getGrowStrategy())); - break; + return std::make_shared<SingleValueNibbleNumericAttribute>(name, info.getGrowStrategy()); case BasicType::INT8: - ret.reset(new SingleValueNumericAttribute<IntegerAttributeTemplate<int8_t> >(name, info)); - break; + return std::make_shared<SingleValueNumericAttribute<IntegerAttributeTemplate<int8_t>>>(name, info); case BasicType::INT16: // XXX: Unneeded since we don't have short document fields in java. - ret.reset(new SingleValueNumericAttribute<IntegerAttributeTemplate<int16_t> >(name, info)); - break; + return std::make_shared<SingleValueNumericAttribute<IntegerAttributeTemplate<int16_t>>>(name, info); case BasicType::INT32: - ret.reset(new SingleValueNumericAttribute<IntegerAttributeTemplate<int32_t> >(name, info)); - break; + return std::make_shared<SingleValueNumericAttribute<IntegerAttributeTemplate<int32_t>>>(name, info); case BasicType::INT64: - ret.reset(new SingleValueNumericAttribute<IntegerAttributeTemplate<int64_t> >(name, info)); - break; + return std::make_shared<SingleValueNumericAttribute<IntegerAttributeTemplate<int64_t>>>(name, info); case BasicType::FLOAT: - ret.reset(new SingleValueNumericAttribute<FloatingPointAttributeTemplate<float> >(name, info)); - break; + return std::make_shared<SingleValueNumericAttribute<FloatingPointAttributeTemplate<float>>>(name, info); case BasicType::DOUBLE: - ret.reset(new SingleValueNumericAttribute<FloatingPointAttributeTemplate<double> >(name, info)); - break; + return std::make_shared<SingleValueNumericAttribute<FloatingPointAttributeTemplate<double>>>(name, info); case BasicType::STRING: - ret.reset(new SingleValueStringAttribute(name, info)); - break; + return std::make_shared<SingleValueStringAttribute>(name, info); case BasicType::PREDICATE: - ret.reset(new PredicateAttribute(name, info)); - break; + return std::make_shared<PredicateAttribute>(name, info); case BasicType::TENSOR: if (info.tensorType().is_dense()) { - ret.reset(new tensor::DenseTensorAttribute(name, info)); + return std::make_shared<tensor::DenseTensorAttribute>(name, info); } else { - ret.reset(new tensor::GenericTensorAttribute(name, info)); + return std::make_shared<tensor::GenericTensorAttribute>(name, info); } - break; case BasicType::REFERENCE: - ret = std::make_shared<attribute::ReferenceAttribute>(name, info); - break; + return std::make_shared<attribute::ReferenceAttribute>(name, info); default: break; } - return ret; + return AttributeVector::SP(); } + } // namespace search diff --git a/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.hpp index ca6b6caba32..b330be3a2bb 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/singlenumericpostattribute.hpp @@ -2,10 +2,10 @@ #pragma once -#include <vespa/searchlib/attribute/singlenumericpostattribute.h> -#include <vespa/searchlib/attribute/enumstore.h> -#include <vespa/searchlib/attribute/enumcomparator.h> -#include <vespa/searchlib/attribute/singlenumericenumattribute.hpp> +#include "singlenumericpostattribute.h" +#include "enumstore.h" +#include "enumcomparator.h" +#include "singlenumericenumattribute.hpp" namespace search { @@ -141,9 +141,7 @@ AttributeVector::SearchContext::UP SingleValueNumericPostingAttribute<B>::getSearch(QueryTermSimple::UP qTerm, const attribute::SearchContextParams & params) const { - return std::make_unique<SinglePostingSearchContext>(std::move(qTerm), - params, - *this); + return std::make_unique<SinglePostingSearchContext>(std::move(qTerm), params, *this); } } // namespace search diff --git a/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.hpp b/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.hpp index 59a5a9b8cac..cdf1acedb24 100644 --- a/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.hpp +++ b/searchlib/src/vespa/searchlib/attribute/singlestringpostattribute.hpp @@ -2,7 +2,7 @@ #pragma once -#include <vespa/searchlib/attribute/singlestringpostattribute.h> +#include "singlestringpostattribute.h" #include <vespa/searchlib/query/query_term_ucs4.h> namespace search { diff --git a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp index 1ca1a336d2d..f1b12d8a227 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/attributedfw.cpp @@ -5,7 +5,6 @@ #include "docsumstate.h" #include <vespa/searchlib/attribute/stringbase.h> #include <vespa/searchlib/attribute/integerbase.h> -#include <vespa/searchlib/attribute/floatbase.h> #include <vespa/searchlib/attribute/iattributemanager.h> #include <vespa/searchlib/tensor/i_tensor_attribute.h> #include <vespa/searchcommon/attribute/iattributecontext.h> @@ -40,7 +39,7 @@ AttrDFW::vec(const GetDocsumsState & s) const { class SingleAttrDFW : public AttrDFW { public: - SingleAttrDFW(const vespalib::string & attrName) : + explicit SingleAttrDFW(const vespalib::string & attrName) : AttrDFW(attrName) { } void insertField(uint32_t docid, GetDocsumsState *state, ResType type, Inserter &target) override; @@ -55,7 +54,6 @@ bool SingleAttrDFW::isDefaultValue(uint32_t docid, const GetDocsumsState * state void SingleAttrDFW::insertField(uint32_t docid, GetDocsumsState * state, ResType type, Inserter &target) { - const char *s=""; const IAttributeVector & v = vec(*state); switch (type) { case RES_INT: { @@ -116,13 +114,13 @@ SingleAttrDFW::insertField(uint32_t docid, GetDocsumsState * state, ResType type case RES_FEATUREDATA: case RES_LONG_STRING: case RES_STRING: { - s = v.getString(docid, nullptr, 0); // no need to pass in a buffer, this attribute has a string storage. + const char *s = v.getString(docid, nullptr, 0); // no need to pass in a buffer, this attribute has a string storage. target.insertString(vespalib::Memory(s)); break; } case RES_LONG_DATA: case RES_DATA: { - s = v.getString(docid, nullptr, 0); // no need to pass in a buffer, this attribute has a string storage. + const char *s = v.getString(docid, nullptr, 0); // no need to pass in a buffer, this attribute has a string storage. target.insertData(vespalib::Memory(s)); break; } @@ -138,7 +136,7 @@ SingleAttrDFW::insertField(uint32_t docid, GetDocsumsState * state, ResType type class MultiAttrDFW : public AttrDFW { public: - MultiAttrDFW(const vespalib::string & attrName) : AttrDFW(attrName) {} + explicit MultiAttrDFW(const vespalib::string & attrName) : AttrDFW(attrName) {} void insertField(uint32_t docid, GetDocsumsState *state, ResType type, Inserter &target) override; }; diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index eb1cc7f0256..7c4e8834104 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -99,11 +99,11 @@ createAttribute(const vespalib::string & name, const document::FieldValue & fv) AttributeVector::SP attr; if (fv.inherits(document::ByteFieldValue::classId) || fv.inherits(document::IntFieldValue::classId) || fv.inherits(document::LongFieldValue::classId)) { - attr.reset(new search::SingleIntegerExtAttribute(name)); + return std::make_shared<search::SingleIntegerExtAttribute>(name); } else if (fv.inherits(document::DoubleFieldValue::classId) || fv.inherits(document::FloatFieldValue::classId)) { - attr.reset(new search::SingleFloatExtAttribute(name)); + return std::make_shared<search::SingleFloatExtAttribute>(name); } else if (fv.inherits(document::StringFieldValue::classId)) { - attr.reset(new search::SingleStringExtAttribute(name)); + return std::make_shared<search::SingleStringExtAttribute>(name); } else { LOG(debug, "Can not make an attribute out of %s of type '%s'.", name.c_str(), fv.getClass().name()); } @@ -120,7 +120,7 @@ SearchVisitor::SummaryGenerator::SummaryGenerator() : { } -SearchVisitor::SummaryGenerator::~SummaryGenerator() { } +SearchVisitor::SummaryGenerator::~SummaryGenerator() = default; vespalib::ConstBufferRef @@ -137,7 +137,7 @@ SearchVisitor::SummaryGenerator::fillSummary(AttributeVector::DocId lid, const H void SearchVisitor::HitsResultPreparator::execute(vespalib::Identifiable & obj) { - HitsAggregationResult & hitsAggr(static_cast<HitsAggregationResult &>(obj)); + auto & hitsAggr(static_cast<HitsAggregationResult &>(obj)); hitsAggr.setSummaryGenerator(_summaryGenerator); _numHitsAggregators++; } @@ -154,7 +154,7 @@ SearchVisitor::GroupingEntry::GroupingEntry(Grouping * grouping) : { } -SearchVisitor::GroupingEntry::~GroupingEntry() { } +SearchVisitor::GroupingEntry::~GroupingEntry() = default; void SearchVisitor::GroupingEntry::aggregate(const document::Document & doc, search::HitRank rank) { @@ -175,7 +175,7 @@ SearchVisitor::SearchVisitor(StorageComponent& component, VisitorEnvironment& vEnv, const Parameters& params) : Visitor(component), - _env(static_cast<SearchEnvironment &>(vEnv)), + _env(dynamic_cast<SearchEnvironment &>(vEnv)), _params(params), _vsmAdapter(nullptr), _docSearchedCount(0), @@ -240,9 +240,9 @@ void SearchVisitor::init(const Parameters & params) LOG(debug, "QFLAG_DUMP_FEATURES: %s", _rankController.getDumpFeatures() ? "true" : "false"); } - if (params.lookup("rankproperties", valueRef) && valueRef.size() > 0) { + if (params.lookup("rankproperties", valueRef) && ! valueRef.empty()) { LOG(spam, "Received rank properties of %zd bytes", valueRef.size()); - uint32_t len = static_cast<uint32_t>(valueRef.size()); + uint32_t len = uint32_t(valueRef.size()); char * data = const_cast<char *>(valueRef.data()); FNET_DataBuffer src(data, len); uint32_t cnt = src.ReadInt32(); @@ -403,7 +403,7 @@ SearchVisitor::PositionInserter::PositionInserter(AttributeVector & attribute, A { } -SearchVisitor::PositionInserter::~PositionInserter() {} +SearchVisitor::PositionInserter::~PositionInserter() = default; void SearchVisitor::PositionInserter::onPrimitive(uint32_t, const Content & c) @@ -414,7 +414,7 @@ SearchVisitor::PositionInserter::onPrimitive(uint32_t, const Content & c) void SearchVisitor::PositionInserter::onStructStart(const Content & c) { - const document::StructuredFieldValue & value = static_cast<const document::StructuredFieldValue &>(c.getValue()); + const auto & value = static_cast<const document::StructuredFieldValue &>(c.getValue()); LOG(debug, "PositionInserter: Adding value '%s'(%d) to attribute '%s' for docid '%d'", value.toString().c_str(), c.getWeight(), _attribute.getName().c_str(), _docId); @@ -445,7 +445,7 @@ SearchVisitor::RankController::processHintedAttributes(const IndexEnvironment & AttributeGuard::UP attr(attrMan.getAttribute(name)); if (attr->valid()) { LOG(debug, "Add attribute '%s' with field id '%u' to the list of needed attributes", name.c_str(), fid); - attributeFields.push_back(AttrInfo(fid, std::move(attr))); + attributeFields.emplace_back(fid, std::move(attr)); } else { LOG(warning, "Cannot locate attribute '%s' in the attribute manager. " "Ignore access hint about this attribute", name.c_str()); @@ -470,7 +470,7 @@ SearchVisitor::RankController::RankController() : { } -SearchVisitor::RankController::~RankController() {} +SearchVisitor::RankController::~RankController() = default; void SearchVisitor::RankController::setupRankProcessors(Query & query, @@ -485,7 +485,7 @@ SearchVisitor::RankController::setupRankProcessors(Query & query, const IndexEnvironment & indexEnv = _rankManagerSnapshot->getIndexEnvironment(_rankProfile); processHintedAttributes(indexEnv, true, attrMan, attributeFields); - _rankProcessor.reset(new RankProcessor(_rankManagerSnapshot, _rankProfile, query, location, _queryProperties, &attrMan)); + _rankProcessor = std::make_unique<RankProcessor>(_rankManagerSnapshot, _rankProfile, query, location, _queryProperties, &attrMan); LOG(debug, "Initialize rank processor"); _rankProcessor->initForRanking(wantedHitCount); @@ -493,7 +493,7 @@ SearchVisitor::RankController::setupRankProcessors(Query & query, // register attribute vectors needed for dumping processHintedAttributes(indexEnv, false, attrMan, attributeFields); - _dumpProcessor.reset(new RankProcessor(_rankManagerSnapshot, _rankProfile, query, location, _queryProperties, &attrMan)); + _dumpProcessor = std::make_unique<RankProcessor>(_rankManagerSnapshot, _rankProfile, query, location, _queryProperties, &attrMan); LOG(debug, "Initialize dump processor"); _dumpProcessor->initForDumping(wantedHitCount); } @@ -620,14 +620,14 @@ SearchVisitor::registerAdditionalFields(const std::vector<vsm::DocsumTools::Fiel for (size_t j = 0; j < inputNames.size(); ++j) { fieldList.push_back(inputNames[j]); if (PositionDataType::isZCurveFieldName(inputNames[j])) { - fieldList.push_back(PositionDataType::cutZCurveFieldName(inputNames[j])); + fieldList.emplace_back(PositionDataType::cutZCurveFieldName(inputNames[j])); } } } // fields used during sorting - fieldList.push_back("[docid]"); - fieldList.push_back("[rank]"); - fieldList.push_back("documentid"); + fieldList.emplace_back("[docid]"); + fieldList.emplace_back("[rank]"); + fieldList.emplace_back("documentid"); } void @@ -710,7 +710,7 @@ SearchVisitor::setupDocsumObjects() } } if (index == _attributeFields.size()) { - _attributeFields.push_back(AttrInfo(fid, std::move(attr))); + _attributeFields.emplace_back(fid, std::move(attr)); } } else { LOG(warning, "Attribute '%s' is not valid", name.c_str()); @@ -764,7 +764,7 @@ void SearchVisitor::setupAttributeVector(const FieldPath &fieldPath) { attr = createAttribute(attrName, fv); } - if (attr.get()) { + if (attr) { LOG(debug, "Adding attribute '%s' for field '%s' with data type '%s' (%s)", attr->getName().c_str(), attrName.c_str(), fv.getDataType()->getName().c_str(), fv.getClass().name()); if ( ! _attrMan.add(attr) ) { @@ -796,7 +796,7 @@ SearchVisitor::setupAttributeVectorsForSorting(const search::common::SortSpec & } } if (index == _attributeFields.size()) { - _attributeFields.push_back(AttrInfo(fid, std::move(attr), sInfo._ascending, sInfo._converter.get())); + _attributeFields.emplace_back(fid, std::move(attr), sInfo._ascending, sInfo._converter.get()); } _sortList.push_back(index); } else { @@ -849,8 +849,8 @@ SearchVisitor::setupGrouping(const std::vector<char> & groupingBlob) class SingleDocumentStore : public vsm::IDocSumCache { public: - SingleDocumentStore(const StorageDocument & doc) : _doc(doc) { } - virtual const vsm::Document & getDocSum(const search::DocumentIdT & docId) const override { + explicit SingleDocumentStore(const StorageDocument & doc) : _doc(doc) { } + const vsm::Document & getDocSum(const search::DocumentIdT & docId) const override { (void) docId; return _doc; } @@ -1001,7 +1001,7 @@ SearchVisitor::fillAttributeVectors(const vespalib::string & documentId, const S fieldId = _fieldsUnion.find(org)->second; } const StorageDocument::SubDocument & subDoc = document.getComplexField(fieldId); - AttributeVector & attrV = const_cast<AttributeVector & >(*finfoGuard); + auto & attrV = const_cast<AttributeVector & >(*finfoGuard); AttributeVector::DocId docId(0); attrV.addDoc(docId); if (subDoc.getFieldValue() != nullptr) { |