diff options
author | Henning Baldersheim <balder@oath.com> | 2018-06-07 12:35:23 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-06-12 09:56:59 +0200 |
commit | 89521c8531b0eeb03bd28f899ecd59a9f8b334a6 (patch) | |
tree | 9a202fec63bb69199f396d86e384cf6c4399aed3 | |
parent | 26d91e2f95c9c5e7e22b67519e8c98b116364dc9 (diff) |
Reduce code visibility
8 files changed, 65 insertions, 105 deletions
diff --git a/searchlib/src/apps/tests/memoryindexstress_test.cpp b/searchlib/src/apps/tests/memoryindexstress_test.cpp index edb9160a1fb..1ba264e0bfe 100644 --- a/searchlib/src/apps/tests/memoryindexstress_test.cpp +++ b/searchlib/src/apps/tests/memoryindexstress_test.cpp @@ -4,7 +4,6 @@ #include <vespa/searchlib/fef/matchdata.h> #include <vespa/searchlib/fef/matchdatalayout.h> #include <vespa/searchlib/fef/termfieldmatchdata.h> -#include <vespa/document/repo/documenttyperepo.h> #include <vespa/searchlib/query/tree/simplequery.h> #include <vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h> #include <vespa/searchlib/queryeval/fake_search.h> @@ -15,6 +14,10 @@ #include <vespa/searchlib/common/sequencedtaskexecutor.h> #include <vespa/searchlib/common/scheduletaskcallback.h> #include <vespa/vespalib/util/threadstackexecutor.h> +#include <vespa/document/repo/documenttyperepo.h> +#include <vespa/document/datatype/documenttype.h> +#include <vespa/document/fieldvalue/document.h> +#include <vespa/document/fieldvalue/stringfieldvalue.h> #include <vespa/document/repo/configbuilder.h> #include <vespa/document/annotation/spanlist.h> #include <vespa/document/annotation/spantree.h> @@ -144,7 +147,7 @@ makeDoc(const DocumentTypeRepo &repo, uint32_t i, idstr << "id:test:test:: " << i; DocumentId id(idstr.str()); const DocumentType *docType = repo.getDocumentType(doc_type_name); - Document::UP doc(new Document(*docType, id)); + auto doc(std::make_unique<Document>(*docType, id)); doc->setRepo(repo); if (!titleString.empty()) { setFieldValue(*doc, title, titleString); diff --git a/searchlib/src/vespa/searchlib/memoryindex/dictionary.h b/searchlib/src/vespa/searchlib/memoryindex/dictionary.h index 6ee971c343f..e9db79c1bd8 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/dictionary.h +++ b/searchlib/src/vespa/searchlib/memoryindex/dictionary.h @@ -4,8 +4,7 @@ #include "memoryfieldindex.h" -namespace search { -namespace memoryindex { +namespace search::memoryindex { class IDocumentRemoveListener; class FieldInverter; @@ -57,8 +56,4 @@ public: uint32_t getNumFields() const { return _numFields; } }; -} // namespace search::memoryindex - - -} // namespace search - +} diff --git a/searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp b/searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp index 4c71b7c14c6..e609c2aefd1 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp +++ b/searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp @@ -84,7 +84,6 @@ DocumentInverter::~DocumentInverter() { _invertThreads.sync(); _pushThreads.sync(); - } diff --git a/searchlib/src/vespa/searchlib/memoryindex/documentinverter.h b/searchlib/src/vespa/searchlib/memoryindex/documentinverter.h index fa34cb2289c..177024c9860 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/documentinverter.h +++ b/searchlib/src/vespa/searchlib/memoryindex/documentinverter.h @@ -2,21 +2,16 @@ #pragma once -#include <map> -#include <set> -#include <vespa/document/document.h> -#include <vespa/searchlib/index/doctypebuilder.h> -#include <limits> #include "i_document_remove_listener.h" +#include <vespa/searchlib/index/doctypebuilder.h> -namespace search -{ -class ISequencedTaskExecutor; -class IDestructorCallback; +namespace search { + class ISequencedTaskExecutor; + class IDestructorCallback; +} -namespace memoryindex -{ +namespace search::memoryindex { class FieldInverter; class UrlFieldInverter; @@ -34,21 +29,10 @@ private: typedef DocTypeBuilder::UriField UriField; typedef DocTypeBuilder::SchemaIndexFields SchemaIndexFields; - void - addFieldPath(const document::DocumentType &docType, - uint32_t fieldId); - - void - buildFieldPath(const document::DocumentType & docType, - const document::DataType *dataType); - - void - invertNormalDocTextField(size_t fieldId, - const document::FieldValue &field); - - void - invertNormalDocUriField(const UriField &handle, - const document::FieldValue &field); + void addFieldPath(const document::DocumentType &docType, uint32_t fieldId); + void buildFieldPath(const document::DocumentType & docType, const document::DataType *dataType); + void invertNormalDocTextField(size_t fieldId, const document::FieldValue &field); + void invertNormalDocUriField(const UriField &handle, const document::FieldValue &field); //typedef document::FieldPath FieldPath; typedef document::Field FieldPath; @@ -68,11 +52,7 @@ private: * * @return schema used by this index */ - const index::Schema & - getSchema() const - { - return _schema; - } + const index::Schema &getSchema() const { return _schema; } public: /** @@ -91,9 +71,7 @@ public: * * @param dict dictionary */ - void - pushDocuments(Dictionary &dict, - const std::shared_ptr<IDestructorCallback> &onWriteDone); + void pushDocuments(Dictionary &dict, const std::shared_ptr<IDestructorCallback> &onWriteDone); /** * Invert a document. @@ -102,8 +80,7 @@ public: * @param doc the document * **/ - void - invertDocument(uint32_t docId, const document::Document &doc); + void invertDocument(uint32_t docId, const document::Document &doc); /** * Remove a document. @@ -116,13 +93,9 @@ public: return _inverters[fieldId].get(); } - const std::vector<std::unique_ptr<FieldInverter> > & - getInverters() const { return _inverters; } + const std::vector<std::unique_ptr<FieldInverter> > & getInverters() const { return _inverters; } uint32_t getNumFields() const { return _inverters.size(); } }; -} // namespace memoryindex - -} // namespace search - +} diff --git a/searchlib/src/vespa/searchlib/memoryindex/i_document_remove_listener.h b/searchlib/src/vespa/searchlib/memoryindex/i_document_remove_listener.h index 853646ca84f..436ee0a49e3 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/i_document_remove_listener.h +++ b/searchlib/src/vespa/searchlib/memoryindex/i_document_remove_listener.h @@ -2,11 +2,9 @@ #pragma once -namespace search -{ +#include <vespa/vespalib/stllike/string.h> -namespace memoryindex -{ +namespace search::memoryindex { /** * Interface used to track which {wordRef, fieldId} pairs that are @@ -16,13 +14,7 @@ class IDocumentRemoveListener { public: virtual ~IDocumentRemoveListener() {} - - virtual void remove(const vespalib::stringref word, - uint32_t docId) = 0; + virtual void remove(const vespalib::stringref word, uint32_t docId) = 0; }; - } - -} - diff --git a/searchlib/src/vespa/searchlib/memoryindex/memoryfieldindex.h b/searchlib/src/vespa/searchlib/memoryindex/memoryfieldindex.h index e12233fe1ae..92a69277b76 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/memoryfieldindex.h +++ b/searchlib/src/vespa/searchlib/memoryindex/memoryfieldindex.h @@ -14,8 +14,7 @@ #include <vespa/searchlib/util/memoryusage.h> #include <vespa/vespalib/stllike/string.h> -namespace search { -namespace memoryindex { +namespace search::memoryindex { class OrderedDocumentInserter; /* @@ -183,9 +182,9 @@ public: } }; -} // namespace search::memoryindex +} -namespace btree { +namespace search::btree { extern template class BTreeNodeDataWrap<memoryindex::MemoryFieldIndex::WordKey, @@ -266,6 +265,4 @@ class BTreeNodeAllocator<memoryindex::MemoryFieldIndex::WordKey, BTreeDefaultTraits::INTERNAL_SLOTS, BTreeDefaultTraits::LEAF_SLOTS>; -} // namespace search::btree - -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/memoryindex/memoryindex.cpp b/searchlib/src/vespa/searchlib/memoryindex/memoryindex.cpp index 40d243d857e..ee61ef5a42f 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/memoryindex.cpp +++ b/searchlib/src/vespa/searchlib/memoryindex/memoryindex.cpp @@ -2,6 +2,7 @@ #include "memoryindex.h" #include "postingiterator.h" +#include "documentinverter.h" #include <vespa/searchlib/index/schemautil.h> #include <vespa/searchlib/queryeval/create_blueprint_visitor_helper.h> #include <vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h> @@ -45,7 +46,9 @@ using queryeval::FieldSpecBaseList; using queryeval::FieldSpec; using queryeval::IRequestContext; -namespace memoryindex { +} + +namespace search::memoryindex { MemoryIndex::MemoryIndex(const Schema &schema, ISequencedTaskExecutor &invertThreads, @@ -53,10 +56,10 @@ MemoryIndex::MemoryIndex(const Schema &schema, : _schema(schema), _invertThreads(invertThreads), _pushThreads(pushThreads), - _inverter0(_schema, _invertThreads, _pushThreads), - _inverter1(_schema, _invertThreads, _pushThreads), - _inverter(&_inverter0), - _dictionary(_schema), + _inverter0(std::make_unique<DocumentInverter>(_schema, _invertThreads, _pushThreads)), + _inverter1(std::make_unique<DocumentInverter>(_schema, _invertThreads, _pushThreads)), + _inverter(_inverter0.get()), + _dictionary(std::make_unique<Dictionary>(_schema)), _frozen(false), _maxDocId(0), // docId 0 is reserved _numDocs(0), @@ -93,8 +96,7 @@ void MemoryIndex::removeDocument(uint32_t docId) { if (_frozen) { - LOG(warning, "Memory index frozen: ignoring remove of document (%u)", - docId); + LOG(warning, "Memory index frozen: ignoring remove of document (%u)", docId); return; } _inverter->removeDocument(docId); @@ -109,7 +111,7 @@ MemoryIndex::commit(const std::shared_ptr<IDestructorCallback> &onWriteDone) { _invertThreads.sync(); // drain inverting into this inverter _pushThreads.sync(); // drain use of other inverter - _inverter->pushDocuments(_dictionary, onWriteDone); + _inverter->pushDocuments(*_dictionary, onWriteDone); flipInverter(); } @@ -117,11 +119,7 @@ MemoryIndex::commit(const std::shared_ptr<IDestructorCallback> &onWriteDone) void MemoryIndex::flipInverter() { - if (_inverter != &_inverter0) { - _inverter = &_inverter0; - } else { - _inverter = &_inverter1; - } + _inverter = (_inverter != _inverter0.get()) ? _inverter0.get(): _inverter1.get(); } void @@ -133,7 +131,7 @@ MemoryIndex::freeze() void MemoryIndex::dump(IndexBuilder &indexBuilder) { - _dictionary.dump(indexBuilder); + _dictionary->dump(indexBuilder); } namespace { @@ -243,7 +241,7 @@ MemoryIndex::createBlueprint(const IRequestContext & requestContext, if (fieldId == Schema::UNKNOWN_FIELD_ID || _hiddenFields[fieldId]) { return Blueprint::UP(new EmptyBlueprint(field)); } - CreateBlueprintVisitor visitor(*this, requestContext, field, fieldId, _dictionary); + CreateBlueprintVisitor visitor(*this, requestContext, field, fieldId, *_dictionary); const_cast<Node &>(term).accept(visitor); return visitor.getResult(); } @@ -252,10 +250,15 @@ MemoryUsage MemoryIndex::getMemoryUsage() const { MemoryUsage usage; - usage.merge(_dictionary.getMemoryUsage()); + usage.merge(_dictionary->getMemoryUsage()); return usage; } +uint64_t +MemoryIndex::getNumWords() const { + return _dictionary->getNumUniqueWords(); +} + void MemoryIndex::pruneRemovedFields(const Schema &schema) { @@ -287,5 +290,4 @@ MemoryIndex::getPrunedSchema() const return _prunedSchema; } -} // namespace memoryindex -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/memoryindex/memoryindex.h b/searchlib/src/vespa/searchlib/memoryindex/memoryindex.h index 8d18b5e52df..d12e844f35f 100644 --- a/searchlib/src/vespa/searchlib/memoryindex/memoryindex.h +++ b/searchlib/src/vespa/searchlib/memoryindex/memoryindex.h @@ -2,20 +2,22 @@ #pragma once -#include "dictionary.h" -#include "documentinverter.h" -#include <vespa/document/fieldvalue/document.h> +#include <vespa/searchlib/common/idestructorcallback.h> #include <vespa/searchlib/queryeval/searchable.h> -#include <vector> +#include <vespa/searchlib/util/memoryusage.h> +#include <vespa/searchcommon/common/schema.h> #include <vespa/vespalib/stllike/hash_set.h> -namespace search { +namespace search::index { class IndexBuilder; } -namespace index { class IndexBuilder; } +namespace search { class ISequencedTaskExecutor; } -class ISequencedTaskExecutor; +namespace document { class Document; } -namespace memoryindex { +namespace search::memoryindex { + +class DocumentInverter; +class Dictionary; /** * Lock-free implementation of a memory-based index @@ -27,10 +29,10 @@ private: index::Schema _schema; ISequencedTaskExecutor &_invertThreads; ISequencedTaskExecutor &_pushThreads; - DocumentInverter _inverter0; - DocumentInverter _inverter1; - DocumentInverter *_inverter; - Dictionary _dictionary; + std::unique_ptr<DocumentInverter> _inverter0; + std::unique_ptr<DocumentInverter> _inverter1; + DocumentInverter *_inverter; + std::unique_ptr<Dictionary> _dictionary; bool _frozen; uint32_t _maxDocId; uint32_t _numDocs; @@ -158,9 +160,7 @@ public: return _numDocs; } - virtual uint64_t getNumWords() const { - return _dictionary.getNumUniqueWords(); - } + virtual uint64_t getNumWords() const; void pruneRemovedFields(const index::Schema &schema); @@ -176,5 +176,4 @@ public: uint64_t getStaticMemoryFootprint() const { return _staticMemoryFootprint; } }; -} // namespace memoryindex -} // namespace search +} |