summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-06-07 12:35:23 +0200
committerHenning Baldersheim <balder@oath.com>2018-06-12 09:56:59 +0200
commit89521c8531b0eeb03bd28f899ecd59a9f8b334a6 (patch)
tree9a202fec63bb69199f396d86e384cf6c4399aed3 /searchlib
parent26d91e2f95c9c5e7e22b67519e8c98b116364dc9 (diff)
Reduce code visibility
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/apps/tests/memoryindexstress_test.cpp7
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/dictionary.h9
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/documentinverter.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/documentinverter.h57
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/i_document_remove_listener.h14
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/memoryfieldindex.h11
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/memoryindex.cpp38
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/memoryindex.h33
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
+}