From 57b9b54286be922494eb13b1deec7928a9a46854 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 9 Jan 2023 14:52:36 +0000 Subject: Initialize in constructor where possible. --- .../tests/diskindex/bitvector/bitvector_test.cpp | 50 +++++++--------------- .../diskindex/fieldwriter/fieldwriter_test.cpp | 6 +-- .../src/vespa/searchlib/diskindex/field_merger.cpp | 4 +- .../src/vespa/searchlib/diskindex/field_merger.h | 10 ++--- .../src/vespa/searchlib/diskindex/fieldwriter.cpp | 13 +++--- .../src/vespa/searchlib/diskindex/fieldwriter.h | 22 +++++----- .../src/vespa/searchlib/diskindex/indexbuilder.cpp | 4 +- 7 files changed, 43 insertions(+), 66 deletions(-) diff --git a/searchlib/src/tests/diskindex/bitvector/bitvector_test.cpp b/searchlib/src/tests/diskindex/bitvector/bitvector_test.cpp index a9f3f91c57e..9bc0382f3ab 100644 --- a/searchlib/src/tests/diskindex/bitvector/bitvector_test.cpp +++ b/searchlib/src/tests/diskindex/bitvector/bitvector_test.cpp @@ -14,44 +14,32 @@ LOG_SETUP("bitvector_test"); using namespace search::index; using search::index::schema::DataType; -namespace search { -namespace diskindex { +namespace search::diskindex { struct FieldWriterWrapper { FieldWriter _writer; - FieldWriterWrapper(uint32_t docIdLimit, uint64_t numWordIds); + FieldWriterWrapper(uint32_t docIdLimit, uint64_t numWordIds, vespalib::stringref path); + FieldWriterWrapper & newWord(vespalib::stringref word); + FieldWriterWrapper & add(uint32_t docId); - FieldWriterWrapper & - newWord(vespalib::stringref word); - - FieldWriterWrapper & - add(uint32_t docId); - - bool - open(const std::string &path, - const Schema &schema, - const uint32_t indexId, - const TuneFileSeqWrite &tuneFileWrite, - const common::FileHeaderContext &fileHeaderContext); + bool open(const Schema &schema, const uint32_t indexId, + const TuneFileSeqWrite &tuneFileWrite, const common::FileHeaderContext &fileHeaderContext); }; -FieldWriterWrapper::FieldWriterWrapper(uint32_t docIdLimit, uint64_t numWordIds) - : _writer(docIdLimit, numWordIds) +FieldWriterWrapper::FieldWriterWrapper(uint32_t docIdLimit, uint64_t numWordIds, vespalib::stringref path) + : _writer(docIdLimit, numWordIds, path) { + std::filesystem::create_directory(std::filesystem::path(path)); } bool -FieldWriterWrapper::open(const std::string &path, - const Schema &schema, - const uint32_t indexId, - const TuneFileSeqWrite &tuneFileWrite, - const common::FileHeaderContext &fileHeaderContext) +FieldWriterWrapper::open(const Schema &schema, const uint32_t indexId, + const TuneFileSeqWrite &tuneFileWrite, const common::FileHeaderContext &fileHeaderContext) { - std::filesystem::create_directory(std::filesystem::path(path)); - return _writer.open(path, 64, 10000, false, false, schema, indexId, FieldLengthInfo(), tuneFileWrite, fileHeaderContext); + return _writer.open(64, 10000, false, false, schema, indexId, FieldLengthInfo(), tuneFileWrite, fileHeaderContext); } FieldWriterWrapper & @@ -104,10 +92,9 @@ Test::requireThatDictionaryHandlesNoEntries(bool directio, bool readmmap) } if (readmmap) tuneFileRead.setWantMemoryMap(); - FieldWriterWrapper fww(5, 2); std::filesystem::create_directory(std::filesystem::path("dump")); - EXPECT_TRUE(fww.open("dump/1/", _schema, _indexId, tuneFileWrite, - fileHeaderContext)); + FieldWriterWrapper fww(5, 2, "dump/1/"); + EXPECT_TRUE(fww.open(_schema, _indexId, tuneFileWrite, fileHeaderContext)); fww.newWord("1").add(1); fww.newWord("2").add(2).add(3); EXPECT_TRUE(fww._writer.close()); @@ -134,9 +121,8 @@ Test::requireThatDictionaryHandlesMultipleEntries(bool directio, bool readmmap) } if (readmmap) tuneFileRead.setWantMemoryMap(); - FieldWriterWrapper fww(64, 6); - EXPECT_TRUE(fww.open("dump/2/", _schema, _indexId, tuneFileWrite, - fileHeaderContext)); + FieldWriterWrapper fww(64, 6, "dump/2/"); + EXPECT_TRUE(fww.open(_schema, _indexId, tuneFileWrite, fileHeaderContext)); // must have >16 docs in order to create bitvector for a word // 17 docs for word 1 BitVector::UP bv1exp(BitVector::create(64)); @@ -202,9 +188,6 @@ Test::Main() { TEST_INIT("bitvector_test"); - TuneFileSeqWrite tuneFileWrite; - TuneFileRandRead tuneFileRead; - if (_argc > 0) { DummyFileHeaderContext::setCreator(_argv[0]); } @@ -218,7 +201,6 @@ Test::Main() TEST_DONE(); } -} } TEST_APPHOOK(search::diskindex::Test); diff --git a/searchlib/src/tests/diskindex/fieldwriter/fieldwriter_test.cpp b/searchlib/src/tests/diskindex/fieldwriter/fieldwriter_test.cpp index 3424343b2fe..b0abfee4ab8 100644 --- a/searchlib/src/tests/diskindex/fieldwriter/fieldwriter_test.cpp +++ b/searchlib/src/tests/diskindex/fieldwriter/fieldwriter_test.cpp @@ -1,6 +1,5 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include #include #include #include @@ -208,9 +207,8 @@ WrappedFieldWriter::open() TuneFileSeqWrite tuneFileWrite; DummyFileHeaderContext fileHeaderContext; fileHeaderContext.disableFileName(); - _fieldWriter = std::make_unique(_docIdLimit, _numWordIds); - _fieldWriter->open(_namepref, - minSkipDocs, minChunkDocs, + _fieldWriter = std::make_unique(_docIdLimit, _numWordIds, _namepref); + _fieldWriter->open(minSkipDocs, minChunkDocs, _dynamicK, _encode_interleaved_features, _schema, _indexId, FieldLengthInfo(4.5, 42), diff --git a/searchlib/src/vespa/searchlib/diskindex/field_merger.cpp b/searchlib/src/vespa/searchlib/diskindex/field_merger.cpp index d27ab2e7787..24d790afe74 100644 --- a/searchlib/src/vespa/searchlib/diskindex/field_merger.cpp +++ b/searchlib/src/vespa/searchlib/diskindex/field_merger.cpp @@ -321,7 +321,7 @@ FieldMerger::open_field_writer() field_length_info = _readers.back()->get_field_length_info(); } SchemaUtil::IndexIterator index(_fusion_out_index.get_schema(), _id); - if (!_writer->open(_field_dir + "/", 64, 262144, _fusion_out_index.get_dynamic_k_pos_index_format(), + if (!_writer->open(64, 262144, _fusion_out_index.get_dynamic_k_pos_index_format(), index.use_interleaved_features(), index.getSchema(), index.getIndex(), field_length_info, @@ -414,7 +414,7 @@ void FieldMerger::merge_postings_start() { /* OUTPUT */ - _writer = std::make_unique(_fusion_out_index.get_doc_id_limit(), _num_word_ids); + _writer = std::make_unique(_fusion_out_index.get_doc_id_limit(), _num_word_ids, _field_dir + "/"); _readers.reserve(_fusion_out_index.get_old_indexes().size()); allocate_field_length_scanner(); _open_reader_idx = 0; diff --git a/searchlib/src/vespa/searchlib/diskindex/field_merger.h b/searchlib/src/vespa/searchlib/diskindex/field_merger.h index 347367b3aa5..8d130052003 100644 --- a/searchlib/src/vespa/searchlib/diskindex/field_merger.h +++ b/searchlib/src/vespa/searchlib/diskindex/field_merger.h @@ -41,11 +41,11 @@ class FieldMerger MERGE_DONE }; - uint32_t _id; - vespalib::string _field_name; - vespalib::string _field_dir; - const FusionOutputIndex& _fusion_out_index; - std::shared_ptr _flush_token; + const uint32_t _id; + const vespalib::string _field_name; + const vespalib::string _field_dir; + const FusionOutputIndex & _fusion_out_index; + std::shared_ptr _flush_token; std::vector> _word_readers; std::unique_ptr> _word_heap; std::unique_ptr _word_aggregator; diff --git a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.cpp b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.cpp index 3442a610f4d..7f6f5c4ed15 100644 --- a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.cpp +++ b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.cpp @@ -16,12 +16,12 @@ namespace search::diskindex { using vespalib::getLastErrorString; using common::FileHeaderContext; -FieldWriter::FieldWriter(uint32_t docIdLimit, uint64_t numWordIds) +FieldWriter::FieldWriter(uint32_t docIdLimit, uint64_t numWordIds, vespalib::stringref prefix) : _dictFile(), _posoccfile(), _bvc(docIdLimit), _bmapfile(BitVectorKeyScope::PERFIELD_WORDS), - _prefix(), + _prefix(prefix), _word(), _numWordIds(numWordIds), _compactWordNum(0), @@ -34,8 +34,7 @@ FieldWriter::FieldWriter(uint32_t docIdLimit, uint64_t numWordIds) FieldWriter::~FieldWriter() = default; bool -FieldWriter::open(const vespalib::string &prefix, - uint32_t minSkipDocs, +FieldWriter::open(uint32_t minSkipDocs, uint32_t minChunkDocs, bool dynamicKPosOccFormat, bool encode_interleaved_features, @@ -45,8 +44,7 @@ FieldWriter::open(const vespalib::string &prefix, const TuneFileSeqWrite &tuneFileWrite, const FileHeaderContext &fileHeaderContext) { - _prefix = prefix; - vespalib::string name = prefix + "posocc.dat.compressed"; + vespalib::string name = _prefix + "posocc.dat.compressed"; PostingListParams params; PostingListParams featureParams; @@ -88,8 +86,7 @@ FieldWriter::open(const vespalib::string &prefix, // Open output boolocc.bdat file vespalib::string booloccbidxname = _prefix + "boolocc"; - _bmapfile.open(booloccbidxname.c_str(), _docIdLimit, tuneFileWrite, - fileHeaderContext); + _bmapfile.open(booloccbidxname.c_str(), _docIdLimit, tuneFileWrite, fileHeaderContext); return true; } diff --git a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h index d541fd59be8..45ab32bc917 100644 --- a/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h +++ b/searchlib/src/vespa/searchlib/diskindex/fieldwriter.h @@ -27,7 +27,7 @@ public: FieldWriter(const FieldWriter &&rhs) = delete; FieldWriter &operator=(const FieldWriter &rhs) = delete; FieldWriter &operator=(const FieldWriter &&rhs) = delete; - FieldWriter(uint32_t docIdLimit, uint64_t numWordIds); + FieldWriter(uint32_t docIdLimit, uint64_t numWordIds, vespalib::stringref prefix); ~FieldWriter(); void newWord(uint64_t wordNum, vespalib::stringref word); @@ -43,7 +43,7 @@ public: uint64_t getSparseWordNum() const { return _wordNum; } - bool open(const vespalib::string &prefix, uint32_t minSkipDocs, uint32_t minChunkDocs, + bool open(uint32_t minSkipDocs, uint32_t minChunkDocs, bool dynamicKPosOccFormat, bool encode_interleaved_features, const Schema &schema, uint32_t indexId, @@ -61,15 +61,15 @@ private: using PostingListCounts = index::PostingListCounts; std::unique_ptr _dictFile; std::unique_ptr _posoccfile; - BitVectorCandidate _bvc; - BitVectorFileWrite _bmapfile; - vespalib::string _prefix; - vespalib::string _word; - const uint64_t _numWordIds; - uint64_t _compactWordNum; - uint64_t _wordNum; - uint32_t _prevDocId; - const uint32_t _docIdLimit; + BitVectorCandidate _bvc; + BitVectorFileWrite _bmapfile; + const vespalib::string _prefix; + vespalib::string _word; + const uint64_t _numWordIds; + uint64_t _compactWordNum; + uint64_t _wordNum; + uint32_t _prevDocId; + const uint32_t _docIdLimit; void flush(); static uint64_t noWordNum() { return 0u; } }; diff --git a/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp b/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp index 6815db0ae0c..f552c35e941 100644 --- a/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp +++ b/searchlib/src/vespa/searchlib/diskindex/indexbuilder.cpp @@ -97,9 +97,9 @@ FileHandle::open(vespalib::stringref dir, { assert(_fieldWriter.get() == nullptr); - _fieldWriter = std::make_shared(docIdLimit, numWordIds); + _fieldWriter = std::make_shared(docIdLimit, numWordIds, dir + "/"); - if (!_fieldWriter->open(dir + "/", 64, 262144u, false, + if (!_fieldWriter->open(64, 262144u, false, index.use_interleaved_features(), index.getSchema(), index.getIndex(), field_length_info, -- cgit v1.2.3