summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-08-29 11:44:29 +0200
committerGitHub <noreply@github.com>2022-08-29 11:44:29 +0200
commit74e4a418a3cd045cec9c1da9a80eb49a486ffb4b (patch)
treed2923bc2ac60ca6f50e05b19266c53dcbeac8ec6
parentee29a7aeb10021c55064f6c5268daefe23897f0d (diff)
parenta2f121c8670f6b51d514f0ebca0d609e9c932d2c (diff)
Merge pull request #23822 from vespa-engine/balder/move-termfieldmatchdataarry-where-it-makes-sense
Move the terfieldmatchdaatarray where it makes sense.
-rw-r--r--searchlib/src/tests/attribute/searchcontextelementiterator/searchcontextelementiterator_test.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposocciterators.cpp40
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcposocciterators.h6
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.cpp20
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/zcpostingiterators.h10
-rw-r--r--searchlib/src/vespa/searchlib/fef/CMakeLists.txt1
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.cpp9
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h8
-rw-r--r--searchlib/src/vespa/searchlib/fef/termmatchdatamerger.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/fef/termmatchdatamerger.h2
-rw-r--r--searchlib/src/vespa/searchlib/index/postinglisthandle.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_index.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/field_index.h2
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/posting_iterator.cpp20
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/posting_iterator.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.h3
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/dot_product_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_search.h4
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/irequestcontext.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterators.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/iterators.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h4
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.cpp5
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simple_phrase_blueprint.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simple_phrase_search.h2
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;