diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-08-29 11:44:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-29 11:44:29 +0200 |
commit | 74e4a418a3cd045cec9c1da9a80eb49a486ffb4b (patch) | |
tree | d2923bc2ac60ca6f50e05b19266c53dcbeac8ec6 | |
parent | ee29a7aeb10021c55064f6c5268daefe23897f0d (diff) | |
parent | a2f121c8670f6b51d514f0ebca0d609e9c932d2c (diff) |
Merge pull request #23822 from vespa-engine/balder/move-termfieldmatchdataarry-where-it-makes-sense
Move the terfieldmatchdaatarray where it makes sense.
26 files changed, 96 insertions, 69 deletions
diff --git a/searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp b/searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp index 06ca299b9ba..3029f2c01a5 100644 --- a/searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp +++ b/searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp @@ -120,7 +120,7 @@ TEST(ElementIteratorTest, require_that_non_searchcontext) fef::TermFieldMatchDataArray tfmda; tfmda.add(&tfmd); queryeval::FakeResult result = createResult(); - auto search = std::make_unique<queryeval::FakeSearch>("","","", result, tfmda); + auto search = std::make_unique<queryeval::FakeSearch>("","","", result, std::move(tfmda)); queryeval::ElementIteratorWrapper wrapper(std::move(search), tfmd); verifyElementIterator(wrapper); } diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp b/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp index 0d0478b2ddc..b67a8409581 100644 --- a/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp +++ b/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp @@ -20,13 +20,13 @@ ZcRareWordPosOccIterator(Position start, uint64_t bitLength, uint32_t docIdLimit bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features, const PosOccFieldsParams *fieldsParams, - const TermFieldMatchDataArray &matchData) - : ZcRareWordPostingIterator<bigEndian, dynamic_k>(matchData, start, docIdLimit, + TermFieldMatchDataArray matchData) + : ZcRareWordPostingIterator<bigEndian, dynamic_k>(std::move(matchData), start, docIdLimit, decode_normal_features, decode_interleaved_features, unpack_normal_features, unpack_interleaved_features), _decodeContextReal(start.getOccurences(), start.getBitOffset(), bitLength, fieldsParams) { - assert(!matchData.valid() || (fieldsParams->getNumFields() == matchData.size())); + assert(!this->_matchData.valid() || (fieldsParams->getNumFields() == this->_matchData.size())); _decodeContext = &_decodeContextReal; } @@ -37,19 +37,21 @@ ZcPosOccIterator(Position start, uint64_t bitLength, uint32_t docIdLimit, bool unpack_normal_features, bool unpack_interleaved_features, uint32_t minChunkDocs, const PostingListCounts &counts, const PosOccFieldsParams *fieldsParams, - const TermFieldMatchDataArray &matchData) - : ZcPostingIterator<bigEndian>(minChunkDocs, dynamic_k, counts, matchData, start, docIdLimit, + TermFieldMatchDataArray matchData) + : ZcPostingIterator<bigEndian>(minChunkDocs, dynamic_k, counts, std::move(matchData), start, docIdLimit, decode_normal_features, decode_interleaved_features, unpack_normal_features, unpack_interleaved_features), _decodeContextReal(start.getOccurences(), start.getBitOffset(), bitLength, fieldsParams) { - assert(!matchData.valid() || (fieldsParams->getNumFields() == matchData.size())); + assert(!this->_matchData.valid() || (fieldsParams->getNumFields() == this->_matchData.size())); _decodeContext = &_decodeContextReal; } template <bool bigEndian> std::unique_ptr<search::queryeval::SearchIterator> -create_zc_posocc_iterator(const PostingListCounts &counts, bitcompression::Position start, uint64_t bit_length, const Zc4PostingParams &posting_params, const bitcompression::PosOccFieldsParams &fields_params, const fef::TermFieldMatchDataArray &match_data, bool unpack_normal_features, bool unpack_interleaved_features) +create_zc_posocc_iterator(const PostingListCounts &counts, bitcompression::Position start, uint64_t bit_length, + const Zc4PostingParams &posting_params, const bitcompression::PosOccFieldsParams &fields_params, + fef::TermFieldMatchDataArray match_data, bool unpack_normal_features, bool unpack_interleaved_features) { using EC = bitcompression::EncodeContext64<bigEndian>; bitcompression::DecodeContext64<bigEndian> d(start.getOccurences(), start.getBitOffset()); @@ -61,28 +63,38 @@ create_zc_posocc_iterator(const PostingListCounts &counts, bitcompression::Posit assert((num_docs == counts._numDocs) || ((num_docs == posting_params._min_chunk_docs) && (num_docs < counts._numDocs))); if (num_docs < posting_params._min_skip_docs) { if (posting_params._dynamic_k) { - return std::make_unique<ZcRareWordPosOccIterator<bigEndian, true>>(start, bit_length, posting_params._doc_id_limit, posting_params._encode_features, posting_params._encode_interleaved_features, unpack_normal_features, unpack_interleaved_features, &fields_params, match_data); + return std::make_unique<ZcRareWordPosOccIterator<bigEndian, true>>(start, bit_length, posting_params._doc_id_limit, + posting_params._encode_features, posting_params._encode_interleaved_features, unpack_normal_features, + unpack_interleaved_features, &fields_params, std::move(match_data)); } else { - return std::make_unique<ZcRareWordPosOccIterator<bigEndian, false>>(start, bit_length, posting_params._doc_id_limit, posting_params._encode_features, posting_params._encode_interleaved_features, unpack_normal_features, unpack_interleaved_features, &fields_params, match_data); + return std::make_unique<ZcRareWordPosOccIterator<bigEndian, false>>(start, bit_length, posting_params._doc_id_limit, + posting_params._encode_features, posting_params._encode_interleaved_features, unpack_normal_features, + unpack_interleaved_features, &fields_params, std::move(match_data)); } } else { if (posting_params._dynamic_k) { - return std::make_unique<ZcPosOccIterator<bigEndian, true>>(start, bit_length, posting_params._doc_id_limit, posting_params._encode_features, posting_params._encode_interleaved_features, unpack_normal_features, unpack_interleaved_features, posting_params._min_chunk_docs, counts, &fields_params, match_data); + return std::make_unique<ZcPosOccIterator<bigEndian, true>>(start, bit_length, posting_params._doc_id_limit, + posting_params._encode_features, posting_params._encode_interleaved_features, unpack_normal_features, + unpack_interleaved_features, posting_params._min_chunk_docs, counts, &fields_params, std::move(match_data)); } else { - return std::make_unique<ZcPosOccIterator<bigEndian, false>>(start, bit_length, posting_params._doc_id_limit, posting_params._encode_features, posting_params._encode_interleaved_features, unpack_normal_features, unpack_interleaved_features, posting_params._min_chunk_docs, counts, &fields_params, match_data); + return std::make_unique<ZcPosOccIterator<bigEndian, false>>(start, bit_length, posting_params._doc_id_limit, + posting_params._encode_features, posting_params._encode_interleaved_features, unpack_normal_features, + unpack_interleaved_features, posting_params._min_chunk_docs, counts, &fields_params, std::move(match_data)); } } } std::unique_ptr<search::queryeval::SearchIterator> -create_zc_posocc_iterator(bool bigEndian, const PostingListCounts &counts, bitcompression::Position start, uint64_t bit_length, const Zc4PostingParams &posting_params, const bitcompression::PosOccFieldsParams &fields_params, const fef::TermFieldMatchDataArray &match_data) +create_zc_posocc_iterator(bool bigEndian, const PostingListCounts &counts, bitcompression::Position start, uint64_t bit_length, + const Zc4PostingParams &posting_params, const bitcompression::PosOccFieldsParams &fields_params, + fef::TermFieldMatchDataArray match_data) { bool unpack_normal_features = match_data.valid() ? match_data[0]->needs_normal_features() : false; bool unpack_interleaved_features = match_data.valid() ? match_data[0]->needs_interleaved_features() : false; if (bigEndian) { - return create_zc_posocc_iterator<true>(counts, start, bit_length, posting_params, fields_params, match_data, unpack_normal_features, unpack_interleaved_features); + return create_zc_posocc_iterator<true>(counts, start, bit_length, posting_params, fields_params, std::move(match_data), unpack_normal_features, unpack_interleaved_features); } else { - return create_zc_posocc_iterator<false>(counts, start, bit_length, posting_params, fields_params, match_data, unpack_normal_features, unpack_interleaved_features); + return create_zc_posocc_iterator<false>(counts, start, bit_length, posting_params, fields_params, std::move(match_data), unpack_normal_features, unpack_interleaved_features); } } diff --git a/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h b/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h index fdc54245c1d..7e60c2df112 100644 --- a/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h +++ b/searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h @@ -23,7 +23,7 @@ public: bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features, const bitcompression::PosOccFieldsParams *fieldsParams, - const fef::TermFieldMatchDataArray &matchData); + fef::TermFieldMatchDataArray matchData); }; @@ -42,11 +42,11 @@ public: bool unpack_normal_features, bool unpack_interleaved_features, uint32_t minChunkDocs, const index::PostingListCounts &counts, const bitcompression::PosOccFieldsParams *fieldsParams, - const fef::TermFieldMatchDataArray &matchData); + fef::TermFieldMatchDataArray matchData); }; std::unique_ptr<search::queryeval::SearchIterator> -create_zc_posocc_iterator(bool bigEndian, const index::PostingListCounts &counts, bitcompression::Position start, uint64_t bit_length, const Zc4PostingParams &posting_params, const bitcompression::PosOccFieldsParams &fields_params, const fef::TermFieldMatchDataArray &match_data); +create_zc_posocc_iterator(bool bigEndian, const index::PostingListCounts &counts, bitcompression::Position start, uint64_t bit_length, const Zc4PostingParams &posting_params, const bitcompression::PosOccFieldsParams &fields_params, fef::TermFieldMatchDataArray match_data); extern template class ZcRareWordPosOccIterator<false, false>; extern template class ZcRareWordPosOccIterator<false, true>; diff --git a/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp b/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp index c7cd9d476a6..6af0ebb6199 100644 --- a/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp +++ b/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp @@ -16,8 +16,8 @@ using queryeval::RankedSearchIteratorBase; #define DEBUG_ZCPOSTING_PRINTF 0 #define DEBUG_ZCPOSTING_ASSERT 0 -ZcIteratorBase::ZcIteratorBase(const TermFieldMatchDataArray &matchData, Position start, uint32_t docIdLimit) : - RankedSearchIteratorBase(matchData), +ZcIteratorBase::ZcIteratorBase(TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit) : + RankedSearchIteratorBase(std::move(matchData)), _docIdLimit(docIdLimit), _start(start) { } @@ -37,10 +37,10 @@ ZcIteratorBase::initRange(uint32_t beginid, uint32_t endid) template <bool bigEndian> ZcRareWordPostingIteratorBase<bigEndian>:: -ZcRareWordPostingIteratorBase(const TermFieldMatchDataArray &matchData, Position start, uint32_t docIdLimit, +ZcRareWordPostingIteratorBase(TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit, bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features) - : ZcIteratorBase(matchData, start, docIdLimit), + : ZcIteratorBase(std::move(matchData), start, docIdLimit), _decodeContext(nullptr), _residue(0), _prevDocId(0), @@ -56,10 +56,10 @@ ZcRareWordPostingIteratorBase(const TermFieldMatchDataArray &matchData, Position template <bool bigEndian, bool dynamic_k> ZcRareWordPostingIterator<bigEndian, dynamic_k>:: -ZcRareWordPostingIterator(const TermFieldMatchDataArray &matchData, Position start, uint32_t docIdLimit, +ZcRareWordPostingIterator(TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit, bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features) - : ZcRareWordPostingIteratorBase<bigEndian>(matchData, start, docIdLimit, + : ZcRareWordPostingIteratorBase<bigEndian>(std::move(matchData), start, docIdLimit, decode_normal_features, decode_interleaved_features, unpack_normal_features, unpack_interleaved_features), _doc_id_k_param() @@ -187,10 +187,10 @@ ZcRareWordPostingIterator<bigEndian, dynamic_k>::readWordStart(uint32_t docIdLim clearUnpacked(); } -ZcPostingIteratorBase::ZcPostingIteratorBase(const TermFieldMatchDataArray &matchData, Position start, uint32_t docIdLimit, +ZcPostingIteratorBase::ZcPostingIteratorBase(TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit, bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features) - : ZcIteratorBase(matchData, start, docIdLimit), + : ZcIteratorBase(std::move(matchData), start, docIdLimit), _valI(nullptr), _valIBase(nullptr), _featureSeekPos(0), @@ -216,11 +216,11 @@ ZcPostingIterator<bigEndian>:: ZcPostingIterator(uint32_t minChunkDocs, bool dynamicK, const PostingListCounts &counts, - const search::fef::TermFieldMatchDataArray &matchData, + search::fef::TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit, bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features) - : ZcPostingIteratorBase(matchData, start, docIdLimit, + : ZcPostingIteratorBase(std::move(matchData), start, docIdLimit, decode_normal_features, decode_interleaved_features, unpack_normal_features, unpack_interleaved_features), _decodeContext(nullptr), diff --git a/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h b/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h index 07467e28229..36375a25d2b 100644 --- a/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h +++ b/searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h @@ -43,7 +43,7 @@ do { \ class ZcIteratorBase : public queryeval::RankedSearchIteratorBase { protected: - ZcIteratorBase(const fef::TermFieldMatchDataArray &matchData, Position start, uint32_t docIdLimit); + ZcIteratorBase(fef::TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit); virtual void readWordStart(uint32_t docIdLimit) = 0; virtual void rewind(Position start) = 0; void initRange(uint32_t beginid, uint32_t endid) override; @@ -74,7 +74,7 @@ public: uint32_t _field_length; uint32_t _num_occs; - ZcRareWordPostingIteratorBase(const fef::TermFieldMatchDataArray &matchData, Position start, uint32_t docIdLimit, + ZcRareWordPostingIteratorBase(fef::TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit, bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features); @@ -127,7 +127,7 @@ class ZcRareWordPostingIterator : public ZcRareWordPostingIteratorBase<bigEndian ZcPostingDocIdKParam<dynamic_k> _doc_id_k_param; public: using ParentClass::_decodeContext; - ZcRareWordPostingIterator(const fef::TermFieldMatchDataArray &matchData, Position start, uint32_t docIdLimit, + ZcRareWordPostingIterator(fef::TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit, bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features); void doSeek(uint32_t docId) override; @@ -299,7 +299,7 @@ protected: VESPA_DLL_LOCAL void doL1SkipSeek(uint32_t docId); void doSeek(uint32_t docId) override; public: - ZcPostingIteratorBase(const fef::TermFieldMatchDataArray &matchData, Position start, uint32_t docIdLimit, + ZcPostingIteratorBase(fef::TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit, bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features); }; @@ -328,7 +328,7 @@ public: const PostingListCounts &_counts; ZcPostingIterator(uint32_t minChunkDocs, bool dynamicK, const PostingListCounts &counts, - const search::fef::TermFieldMatchDataArray &matchData, Position start, uint32_t docIdLimit, + search::fef::TermFieldMatchDataArray matchData, Position start, uint32_t docIdLimit, bool decode_normal_features, bool decode_interleaved_features, bool unpack_normal_features, bool unpack_interleaved_features); diff --git a/searchlib/src/vespa/searchlib/fef/CMakeLists.txt b/searchlib/src/vespa/searchlib/fef/CMakeLists.txt index ba4430ff8e6..398cc0518f8 100644 --- a/searchlib/src/vespa/searchlib/fef/CMakeLists.txt +++ b/searchlib/src/vespa/searchlib/fef/CMakeLists.txt @@ -36,6 +36,7 @@ vespa_add_library(searchlib_fef OBJECT table.cpp tablemanager.cpp termfieldmatchdata.cpp + termfieldmatchdataarray.cpp termfieldmatchdataposition.cpp termmatchdatamerger.cpp utils.cpp diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.cpp b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.cpp new file mode 100644 index 00000000000..87a25a87a80 --- /dev/null +++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.cpp @@ -0,0 +1,9 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include "termfieldmatchdataarray.h" + +namespace search::fef { + +TermFieldMatchDataArray::~TermFieldMatchDataArray() = default; + +} diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h index 13a78a445e8..3c1b76ad40e 100644 --- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h +++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h @@ -23,6 +23,12 @@ private: std::vector<TermFieldMatchData *> _array; public: + TermFieldMatchDataArray() = default; + TermFieldMatchDataArray(TermFieldMatchDataArray &&) noexcept = default; + TermFieldMatchDataArray & operator = (TermFieldMatchDataArray &&) noexcept = default; + TermFieldMatchDataArray(const TermFieldMatchDataArray&) = default; + TermFieldMatchDataArray & operator = (const TermFieldMatchDataArray &) = delete; + ~TermFieldMatchDataArray(); /** * Reserve space for a number of elements in order to reduce number of allocations. * @param size Number of elements to reserve space for. @@ -37,7 +43,7 @@ public: * @param value the pointer to be added **/ TermFieldMatchDataArray &add(TermFieldMatchData *value) { - assert(value != 0); + assert(value != nullptr); _array.push_back(value); return *this; } diff --git a/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp b/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp index 6b9c5a31c97..d1906f53514 100644 --- a/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp +++ b/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp @@ -6,9 +6,9 @@ namespace search::fef { TermMatchDataMerger::TermMatchDataMerger(const Inputs &allinputs, - const TermFieldMatchDataArray &outputs) + TermFieldMatchDataArray outputs) : _inputs(), - _output(outputs), + _output(std::move(outputs)), _scratch() { for (size_t i = 0; i < _output.size(); ++i) { diff --git a/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h b/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h index 576dfc9a22c..fd015a7d304 100644 --- a/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h +++ b/searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h @@ -31,7 +31,7 @@ public: TermMatchDataMerger(const TermMatchDataMerger &) = delete; TermMatchDataMerger &operator=(const TermMatchDataMerger &) = delete; - TermMatchDataMerger(const Inputs &allinputs, const TermFieldMatchDataArray &outputs); + TermMatchDataMerger(const Inputs &allinputs, TermFieldMatchDataArray outputs); ~TermMatchDataMerger(); void merge(uint32_t docid); diff --git a/searchlib/src/vespa/searchlib/index/postinglisthandle.cpp b/searchlib/src/vespa/searchlib/index/postinglisthandle.cpp index ba1dcb9c87a..714331bc161 100644 --- a/searchlib/src/vespa/searchlib/index/postinglisthandle.cpp +++ b/searchlib/src/vespa/searchlib/index/postinglisthandle.cpp @@ -10,7 +10,6 @@ PostingListHandle::createIterator(const PostingListCounts &counts, const search::fef::TermFieldMatchDataArray &matchData, bool useBitVector) const { - (void) useBitVector; return _file->createIterator(counts, *this, matchData, useBitVector); } diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_index.cpp b/searchlib/src/vespa/searchlib/memoryindex/field_index.cpp index 59289bfbf8f..ddf58d7b9f1 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/field_index.cpp +++ b/searchlib/src/vespa/searchlib/memoryindex/field_index.cpp @@ -215,10 +215,10 @@ template <bool interleaved_features> queryeval::SearchIterator::UP FieldIndex<interleaved_features>::make_search_iterator(const vespalib::string& term, uint32_t field_id, - const fef::TermFieldMatchDataArray& match_data) const + fef::TermFieldMatchDataArray match_data) const { return search::memoryindex::make_search_iterator<interleaved_features> - (find(term), getFeatureStore(), field_id, match_data); + (find(term), getFeatureStore(), field_id, std::move(match_data)); } namespace { diff --git a/searchlib/src/vespa/searchlib/memoryindex/field_index.h b/searchlib/src/vespa/searchlib/memoryindex/field_index.h index 988b7d723f1..9f9f4124100 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/field_index.h +++ b/searchlib/src/vespa/searchlib/memoryindex/field_index.h @@ -100,7 +100,7 @@ public: */ queryeval::SearchIterator::UP make_search_iterator(const vespalib::string& term, uint32_t field_id, - const fef::TermFieldMatchDataArray& match_data) const; + fef::TermFieldMatchDataArray match_data) const; std::unique_ptr<queryeval::SimpleLeafBlueprint> make_term_blueprint(const vespalib::string& term, const queryeval::FieldSpecBase& field, diff --git a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp index 2b4c1a024d9..48fc6873390 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp +++ b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp @@ -33,7 +33,7 @@ public: PostingIteratorBase(PostingListIteratorType itr, const FeatureStore& feature_store, uint32_t field_id, - const fef::TermFieldMatchDataArray& match_data); + fef::TermFieldMatchDataArray match_data); ~PostingIteratorBase(); void doSeek(uint32_t docId) override; @@ -45,8 +45,8 @@ template <bool interleaved_features> PostingIteratorBase<interleaved_features>::PostingIteratorBase(PostingListIteratorType itr, const FeatureStore& feature_store, uint32_t field_id, - const fef::TermFieldMatchDataArray& match_data) : - queryeval::RankedSearchIteratorBase(match_data), + fef::TermFieldMatchDataArray match_data) : + queryeval::RankedSearchIteratorBase(std::move(match_data)), _itr(itr), _feature_store(feature_store), _feature_decoder(nullptr) @@ -141,25 +141,25 @@ queryeval::SearchIterator::UP make_search_iterator(typename FieldIndex<interleaved_features>::PostingList::ConstIterator itr, const FeatureStore& feature_store, uint32_t field_id, - const fef::TermFieldMatchDataArray& match_data) + fef::TermFieldMatchDataArray match_data) { assert(match_data.size() == 1); auto* tfmd = match_data[0]; if (tfmd->needs_normal_features()) { if (tfmd->needs_interleaved_features()) { return std::make_unique<PostingIterator<interleaved_features, true, true>> - (itr, feature_store, field_id, match_data); + (itr, feature_store, field_id, std::move(match_data)); } else { return std::make_unique<PostingIterator<interleaved_features, true, false>> - (itr, feature_store, field_id, match_data); + (itr, feature_store, field_id, std::move(match_data)); } } else { if (tfmd->needs_interleaved_features()) { return std::make_unique<PostingIterator<interleaved_features, false, true>> - (itr, feature_store, field_id, match_data); + (itr, feature_store, field_id, std::move(match_data)); } else { return std::make_unique<PostingIterator<interleaved_features, false, false>> - (itr, feature_store, field_id, match_data); + (itr, feature_store, field_id, std::move(match_data)); } } } @@ -169,14 +169,14 @@ queryeval::SearchIterator::UP make_search_iterator<false>(typename FieldIndex<false>::PostingList::ConstIterator, const FeatureStore&, uint32_t, - const fef::TermFieldMatchDataArray&); + fef::TermFieldMatchDataArray); template queryeval::SearchIterator::UP make_search_iterator<true>(typename FieldIndex<true>::PostingList::ConstIterator, const FeatureStore&, uint32_t, - const fef::TermFieldMatchDataArray&); + fef::TermFieldMatchDataArray); template class PostingIteratorBase<false>; template class PostingIteratorBase<true>; diff --git a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h index ea513b1dced..790f8bb3db7 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h +++ b/searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h @@ -22,7 +22,7 @@ queryeval::SearchIterator::UP make_search_iterator(typename FieldIndex<interleaved_features>::PostingList::ConstIterator itr, const FeatureStore& feature_store, uint32_t field_id, - const fef::TermFieldMatchDataArray& match_data); + fef::TermFieldMatchDataArray match_data); } diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.h b/searchlib/src/vespa/searchlib/queryeval/blueprint.h index 4d7460452f2..5dca5c9412b 100644 --- a/searchlib/src/vespa/searchlib/queryeval/blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.h @@ -362,8 +362,7 @@ public: void freeze() override final; SearchIteratorUP createSearch(fef::MatchData &md, bool strict) const override; - virtual SearchIteratorUP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, - bool strict) const = 0; + virtual SearchIteratorUP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const = 0; }; // for leaf nodes representing a single term diff --git a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h index 9ad2e4dc92d..5955c359003 100644 --- a/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h @@ -21,7 +21,7 @@ class DotProductBlueprint : public ComplexLeafBlueprint public: DotProductBlueprint(const FieldSpec &field); - ~DotProductBlueprint(); + ~DotProductBlueprint() override; // used by create visitor FieldSpec getNextChildField(const FieldSpec &outer); diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_search.h b/searchlib/src/vespa/searchlib/queryeval/fake_search.h index d8cd31fba4c..5cd04f80499 100644 --- a/searchlib/src/vespa/searchlib/queryeval/fake_search.h +++ b/searchlib/src/vespa/searchlib/queryeval/fake_search.h @@ -29,9 +29,9 @@ public: const vespalib::string &field, const vespalib::string &term, const FakeResult &res, - const fef::TermFieldMatchDataArray &tfmda) + fef::TermFieldMatchDataArray tfmda) : _tag(tag), _field(field), _term(term), - _result(res), _offset(0), _tfmda(tfmda), + _result(res), _offset(0), _tfmda(std::move(tfmda)), _ctx(nullptr) { assert(_tfmda.size() == 1); diff --git a/searchlib/src/vespa/searchlib/queryeval/irequestcontext.h b/searchlib/src/vespa/searchlib/queryeval/irequestcontext.h index 5aa5db081ab..52992a52103 100644 --- a/searchlib/src/vespa/searchlib/queryeval/irequestcontext.h +++ b/searchlib/src/vespa/searchlib/queryeval/irequestcontext.h @@ -17,7 +17,7 @@ namespace search::queryeval { class IRequestContext { public: - virtual ~IRequestContext() { } + virtual ~IRequestContext() = default; /** * Provides the time of soft doom for the query. Now it is time to start cleaning up and return what you have. diff --git a/searchlib/src/vespa/searchlib/queryeval/iterators.cpp b/searchlib/src/vespa/searchlib/queryeval/iterators.cpp index f3d12cd34a6..07beebac695 100644 --- a/searchlib/src/vespa/searchlib/queryeval/iterators.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/iterators.cpp @@ -5,9 +5,9 @@ namespace search::queryeval { RankedSearchIteratorBase:: -RankedSearchIteratorBase(const fef::TermFieldMatchDataArray &matchData) +RankedSearchIteratorBase(fef::TermFieldMatchDataArray matchData) : SearchIterator(), - _matchData(matchData), + _matchData(std::move(matchData)), _needUnpack(1) { } diff --git a/searchlib/src/vespa/searchlib/queryeval/iterators.h b/searchlib/src/vespa/searchlib/queryeval/iterators.h index ead00437471..e4f75184924 100644 --- a/searchlib/src/vespa/searchlib/queryeval/iterators.h +++ b/searchlib/src/vespa/searchlib/queryeval/iterators.h @@ -21,7 +21,7 @@ protected: uint32_t getNeedUnpack() const { return _needUnpack; } void incNeedUnpack() { ++_needUnpack; } public: - RankedSearchIteratorBase(const fef::TermFieldMatchDataArray &matchData); + RankedSearchIteratorBase(fef::TermFieldMatchDataArray matchData); ~RankedSearchIteratorBase() override; bool getUnpacked() const { return _needUnpack == 0; } }; diff --git a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h index 7a1d8f3d253..2f97d89e322 100644 --- a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h +++ b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h @@ -44,7 +44,7 @@ protected: createLeafSearch(const search::fef::TermFieldMatchDataArray &tfmda, bool strict) const override; public: SimpleBlueprint(const SimpleResult &result); - ~SimpleBlueprint(); + ~SimpleBlueprint() override; SimpleBlueprint &tag(const vespalib::string &tag); const vespalib::string &tag() const { return _tag; } SearchIterator::UP createFilterSearch(bool strict, FilterConstraint constraint) const override; @@ -67,7 +67,7 @@ protected: public: FakeBlueprint(const FieldSpec &field, const FakeResult &result); - ~FakeBlueprint(); + ~FakeBlueprint() override; FakeBlueprint &tag(const vespalib::string &t) { _tag = t; diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp index 0025fd5fe03..a3f3234af27 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp @@ -75,13 +75,14 @@ SimplePhraseBlueprint::createLeafSearch(const fef::TermFieldMatchDataArray &tfmd order_map.insert(std::make_pair(childState.estimate().estHits, i)); } std::vector<uint32_t> eval_order; + eval_order.reserve(order_map.size()); for (const auto & child : order_map) { eval_order.push_back(child.second); } auto phrase = std::make_unique<SimplePhraseSearch>(std::move(children), - std::move(md), childMatch, - eval_order, *tfmda[0], strict); + std::move(md), std::move(childMatch), + std::move(eval_order), *tfmda[0], strict); phrase->setDoom(& _doom); return phrase; } diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h index 10cdac34f19..e7a0d112ca5 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h +++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h @@ -25,7 +25,7 @@ private: public: SimplePhraseBlueprint(const FieldSpec &field, const IRequestContext & requestContext, bool expensive); - ~SimplePhraseBlueprint(); + ~SimplePhraseBlueprint() override; // used by create visitor FieldSpec getNextChildField(const FieldSpec &outer); diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp index f58f888393b..0d4940037b2 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp @@ -159,12 +159,12 @@ SimplePhraseSearch::phraseSeek(uint32_t doc_id) { SimplePhraseSearch::SimplePhraseSearch(Children children, fef::MatchData::UP md, - const fef::TermFieldMatchDataArray &childMatch, + fef::TermFieldMatchDataArray childMatch, vector<uint32_t> eval_order, TermFieldMatchData &tmd, bool strict) : AndSearch(std::move(children)), _md(std::move(md)), - _childMatch(childMatch), + _childMatch(std::move(childMatch)), _eval_order(std::move(eval_order)), _tmd(tmd), _doom(nullptr), diff --git a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h index 7b9d7c9365f..f1f722caf98 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h +++ b/searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h @@ -45,7 +45,7 @@ public: **/ SimplePhraseSearch(Children children, fef::MatchData::UP md, - const fef::TermFieldMatchDataArray &childMatch, + fef::TermFieldMatchDataArray childMatch, std::vector<uint32_t> eval_order, fef::TermFieldMatchData &tmd, bool strict); void doSeek(uint32_t doc_id) override; |