aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-11-05 15:05:00 +0100
committerHenning Baldersheim <balder@oath.com>2018-11-05 15:05:00 +0100
commit6cabf3d40ff50a6157e7ed340b4cfaf95c3930df (patch)
treeac332a82e20235494d8f45590c19d0d05e8e569c /searchlib/src
parenta2590c561491ebc087e20fbafca8218240f1bb78 (diff)
Clean up so all types related to attribute posting lists are defined in one place.
Diffstat (limited to 'searchlib/src')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributeiterators.h3
-rw-r--r--searchlib/src/vespa/searchlib/attribute/dociditerator.h4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp21
-rw-r--r--searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h13
-rw-r--r--searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h6
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postingchange.h8
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postingdata.h13
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp24
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglisttraits.h22
-rw-r--r--searchlib/src/vespa/searchlib/btree/btreeaggregator.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/btree/btreeaggregator.h50
-rw-r--r--searchlib/src/vespa/searchlib/btree/btreeaggregator.hpp11
-rw-r--r--searchlib/src/vespa/searchlib/btree/minmaxaggrcalc.h12
-rw-r--r--searchlib/src/vespa/searchlib/btree/minmaxaggregated.h10
-rw-r--r--searchlib/src/vespa/searchlib/btree/noaggrcalc.h12
-rw-r--r--searchlib/src/vespa/searchlib/btree/noaggregated.h10
16 files changed, 86 insertions, 135 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/attributeiterators.h b/searchlib/src/vespa/searchlib/attribute/attributeiterators.h
index 7b73e0d5990..0fbcab03ec0 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributeiterators.h
+++ b/searchlib/src/vespa/searchlib/attribute/attributeiterators.h
@@ -3,9 +3,8 @@
#pragma once
#include "dociditerator.h"
+#include "postinglisttraits.h"
#include <vespa/searchlib/queryeval/searchiterator.h>
-#include <vespa/searchlib/btree/btreenode.h>
-#include <vespa/searchlib/btree/btreeiterator.h>
namespace search {
diff --git a/searchlib/src/vespa/searchlib/attribute/dociditerator.h b/searchlib/src/vespa/searchlib/attribute/dociditerator.h
index c69d6035f49..1eb1829f3fd 100644
--- a/searchlib/src/vespa/searchlib/attribute/dociditerator.h
+++ b/searchlib/src/vespa/searchlib/attribute/dociditerator.h
@@ -2,7 +2,9 @@
#pragma once
-#include "postinglisttraits.h"
+#include "postingdata.h"
+#include <vespa/searchlib/btree/minmaxaggregated.h>
+#include <algorithm>
namespace search {
diff --git a/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp b/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp
index 7cad3f7d1d3..7f74d61c1f7 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.cpp
@@ -3,12 +3,9 @@
#include "enumhintsearchcontext.h"
#include <vespa/searchlib/queryeval/emptysearch.h>
-namespace search {
+namespace search::attribute {
using queryeval::SearchIterator;
-
-namespace attribute {
-
using btree::BTreeNode;
using fef::TermFieldMatchData;
@@ -25,9 +22,7 @@ EnumHintSearchContext(const EnumStoreDictBase &dictionary,
}
-EnumHintSearchContext::~EnumHintSearchContext()
-{
-}
+EnumHintSearchContext::~EnumHintSearchContext() = default;
void
@@ -51,14 +46,10 @@ EnumHintSearchContext::fetchPostings(bool strict)
}
SearchIterator::UP
-EnumHintSearchContext::createPostingIterator(TermFieldMatchData *matchData,
- bool strict)
+EnumHintSearchContext::createPostingIterator(TermFieldMatchData *, bool )
{
- (void) matchData;
- (void) strict;
-
return (_uniqueValues == 0u)
- ? SearchIterator::UP(new queryeval::EmptySearch())
+ ? std::make_unique<queryeval::EmptySearch>()
: SearchIterator::UP();
}
@@ -71,6 +62,4 @@ EnumHintSearchContext::approximateHits() const
: std::max(uint64_t(_docIdLimit), _numValues);
}
-} // namespace attribute
-
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h b/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h
index be315b05a69..7d6d31fce50 100644
--- a/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h
+++ b/searchlib/src/vespa/searchlib/attribute/enumhintsearchcontext.h
@@ -3,15 +3,10 @@
#pragma once
#include "enumstore.h"
-#include "postinglisttraits.h"
#include "ipostinglistsearchcontext.h"
#include <vespa/searchlib/queryeval/searchiterator.h>
-namespace search
-{
-
-namespace attribute
-{
+namespace search::attribute {
/**
* Search context helper for enumerated attributes, used to eliminate
@@ -42,8 +37,4 @@ protected:
unsigned int approximateHits() const override;
};
-
-} // namespace attribute
-
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h b/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h
index 7798d3efb3a..e93635749b3 100644
--- a/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h
+++ b/searchlib/src/vespa/searchlib/attribute/i_document_weight_attribute.h
@@ -2,14 +2,14 @@
#pragma once
+#include "postinglisttraits.h"
#include <vespa/searchlib/datastore/entryref.h>
-#include <vespa/searchlib/btree/btreeiterator.h>
namespace search {
namespace query { class Node; }
-typedef btree::BTreeConstIterator<uint32_t, int32_t, btree::MinMaxAggregated, std::less<uint32_t>, btree::BTreeDefaultTraits> DocumentWeightIterator;
+using DocumentWeightIterator = attribute::PostingListTraits<int32_t>::const_iterator;
struct IDocumentWeightAttribute
{
@@ -28,5 +28,5 @@ struct IDocumentWeightAttribute
virtual ~IDocumentWeightAttribute() {}
};
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/attribute/postingchange.h b/searchlib/src/vespa/searchlib/attribute/postingchange.h
index 35260f9bb53..00904954a2b 100644
--- a/searchlib/src/vespa/searchlib/attribute/postingchange.h
+++ b/searchlib/src/vespa/searchlib/attribute/postingchange.h
@@ -2,12 +2,11 @@
#pragma once
-#include <vespa/vespalib/util/array.h>
-#include "postinglisttraits.h"
+#include "postingdata.h"
#include "enumstorebase.h"
+#include <vespa/vespalib/util/array.h>
-namespace search
-{
+namespace search {
class GrowableBitVector;
@@ -81,7 +80,6 @@ PostingChange<AttributeWeightPosting>::add(uint32_t docId, int32_t weight)
_additions.push_back(AttributeWeightPosting(docId, weight));
}
-
} // namespace search
diff --git a/searchlib/src/vespa/searchlib/attribute/postingdata.h b/searchlib/src/vespa/searchlib/attribute/postingdata.h
new file mode 100644
index 00000000000..001e1015d19
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/attribute/postingdata.h
@@ -0,0 +1,13 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/searchlib/btree/btree_key_data.h>
+
+namespace search {
+
+using AttributePosting = btree::BTreeKeyData<uint32_t, btree::BTreeNoLeafData>;
+using AttributeWeightPosting = btree::BTreeKeyData<uint32_t, int32_t>;
+
+}
+
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp b/searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp
index 35c2c7ffad9..2681b6bc39b 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/postinglisttraits.cpp
@@ -1,8 +1,32 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "postinglisttraits.h"
+#include <vespa/searchlib/btree/btreestore.hpp>
+#include <vespa/searchlib/btree/btreeroot.hpp>
+#include <vespa/searchlib/btree/btreenodeallocator.hpp>
+#include <vespa/searchlib/btree/btreebuilder.hpp>
+#include <vespa/searchlib/btree/btreeiterator.hpp>
namespace search {
+using btree::BTreeNoLeafData;
+using NoD = attribute::PostingListTraits<BTreeNoLeafData>;
+using WD = attribute::PostingListTraits<int32_t>;
+
+template class btree::BTreeStore<uint32_t, BTreeNoLeafData, NoD::AggregatedType, std::less<uint32_t>, NoD::BTreeTraits, NoD::AggrCalcType>;
+template class btree::BTreeRoot<uint32_t, BTreeNoLeafData, NoD::AggregatedType, std::less<uint32_t>, NoD::BTreeTraits, NoD::AggrCalcType>;
+template class btree::BTreeRootT<uint32_t, BTreeNoLeafData, NoD::AggregatedType, std::less<uint32_t>, NoD::BTreeTraits>;
+template class btree::BTreeNodeAllocator<uint32_t, BTreeNoLeafData, NoD::AggregatedType, NoD::BTreeTraits::INTERNAL_SLOTS, NoD::BTreeTraits::LEAF_SLOTS>;
+template class btree::BTreeBuilder<uint32_t, BTreeNoLeafData, NoD::AggregatedType, NoD::BTreeTraits::INTERNAL_SLOTS, NoD::BTreeTraits::LEAF_SLOTS, NoD::AggrCalcType>;
+template class btree::BTreeIteratorBase<uint32_t, BTreeNoLeafData, NoD::AggregatedType, NoD::BTreeTraits::INTERNAL_SLOTS, NoD::BTreeTraits::LEAF_SLOTS, NoD::BTreeTraits::PATH_SIZE>;
+
+template class btree::BTreeStore<uint32_t, int32_t, WD::AggregatedType, std::less<uint32_t>, WD::BTreeTraits, WD::AggrCalcType>;
+template class btree::BTreeRoot<uint32_t, int32_t, WD::AggregatedType, std::less<uint32_t>, WD::BTreeTraits, WD::AggrCalcType>;
+template class btree::BTreeRootT<uint32_t, int32_t, WD::AggregatedType, std::less<uint32_t>, WD::BTreeTraits>;
+template class btree::BTreeNodeAllocator<uint32_t, int32_t, WD::AggregatedType, WD::BTreeTraits::INTERNAL_SLOTS, WD::BTreeTraits::LEAF_SLOTS>;
+template class btree::BTreeBuilder<uint32_t, int32_t, WD::AggregatedType, WD::BTreeTraits::INTERNAL_SLOTS, WD::BTreeTraits::LEAF_SLOTS, WD::AggrCalcType>;
+template class btree::BTreeIteratorBase<uint32_t, int32_t, WD::AggregatedType, WD::BTreeTraits::INTERNAL_SLOTS, WD::BTreeTraits::LEAF_SLOTS, WD::BTreeTraits::PATH_SIZE>;
+template class btree::BTreeAggregator<uint32_t, int32_t, WD::AggregatedType, WD::BTreeTraits::INTERNAL_SLOTS, WD::BTreeTraits::LEAF_SLOTS, WD::AggrCalcType >;
+
} // namespace search
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglisttraits.h b/searchlib/src/vespa/searchlib/attribute/postinglisttraits.h
index a67b881c266..0400702427e 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglisttraits.h
+++ b/searchlib/src/vespa/searchlib/attribute/postinglisttraits.h
@@ -4,9 +4,7 @@
#include <vespa/searchlib/btree/btreestore.h>
-namespace search {
-
-namespace attribute {
+namespace search::attribute {
template <typename DataT> class PostingListTraits;
template <typename DataT> class PostingStore;
@@ -19,10 +17,8 @@ private:
public:
using AggregatedType = btree::NoAggregated;
using AggrCalcType = btree::NoAggrCalc;
- using const_iterator = btree::BTreeConstIterator<uint32_t, btree::BTreeNoLeafData, AggregatedType ,
- std::less<uint32_t>, BTreeTraits >;
- using PostingStoreBase = btree::BTreeStore<uint32_t, btree::BTreeNoLeafData, AggregatedType,
- std::less<uint32_t>, BTreeTraits, AggrCalcType> ;
+ using const_iterator = btree::BTreeConstIterator<uint32_t, btree::BTreeNoLeafData, AggregatedType, std::less<uint32_t>, BTreeTraits >;
+ using PostingStoreBase = btree::BTreeStore<uint32_t, btree::BTreeNoLeafData, AggregatedType, std::less<uint32_t>, BTreeTraits, AggrCalcType> ;
using PostingList = PostingStore<btree::BTreeNoLeafData>;
using Posting = PostingStoreBase::KeyDataType;
};
@@ -35,18 +31,10 @@ private:
public:
using AggregatedType = btree::MinMaxAggregated;
using AggrCalcType = btree::MinMaxAggrCalc;
- using const_iterator = btree::BTreeConstIterator<uint32_t, int32_t, AggregatedType ,
- std::less<uint32_t>, BTreeTraits >;
- using PostingStoreBase = btree::BTreeStore<uint32_t, int32_t, AggregatedType,
- std::less<uint32_t>, BTreeTraits, AggrCalcType>;
+ using const_iterator = btree::BTreeConstIterator<uint32_t, int32_t, AggregatedType, std::less<uint32_t>, BTreeTraits >;
+ using PostingStoreBase = btree::BTreeStore<uint32_t, int32_t, AggregatedType, std::less<uint32_t>, BTreeTraits, AggrCalcType>;
using PostingList = PostingStore<int32_t>;
using Posting = PostingStoreBase::KeyDataType;
};
}
-
-using AttributePosting = btree::BTreeKeyData<uint32_t, btree::BTreeNoLeafData>;
-using AttributeWeightPosting = btree::BTreeKeyData<uint32_t, int32_t>;
-
-}
-
diff --git a/searchlib/src/vespa/searchlib/btree/btreeaggregator.cpp b/searchlib/src/vespa/searchlib/btree/btreeaggregator.cpp
index 1efa6a7f099..2eb627192dc 100644
--- a/searchlib/src/vespa/searchlib/btree/btreeaggregator.cpp
+++ b/searchlib/src/vespa/searchlib/btree/btreeaggregator.cpp
@@ -1,8 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "btreetraits.h"
#include "btreeaggregator.hpp"
-#include "noaggrcalc.h"
#include "minmaxaggrcalc.h"
namespace search::btree {
diff --git a/searchlib/src/vespa/searchlib/btree/btreeaggregator.h b/searchlib/src/vespa/searchlib/btree/btreeaggregator.h
index 95c03b11ef8..38c6f579f53 100644
--- a/searchlib/src/vespa/searchlib/btree/btreeaggregator.h
+++ b/searchlib/src/vespa/searchlib/btree/btreeaggregator.h
@@ -7,11 +7,7 @@
#include "btreetraits.h"
#include "noaggrcalc.h"
-namespace search
-{
-
-namespace btree
-{
+namespace search::btree {
template <typename KeyT,
typename DataT,
@@ -22,47 +18,25 @@ template <typename KeyT,
class BTreeAggregator
{
public:
- typedef BTreeNodeAllocator<KeyT, DataT, AggrT,
- INTERNAL_SLOTS,
- LEAF_SLOTS> NodeAllocatorType;
- typedef BTreeInternalNode<KeyT, AggrT, INTERNAL_SLOTS>
- InternalNodeType;
- typedef BTreeLeafNode<KeyT, DataT, AggrT, LEAF_SLOTS>
- LeafNodeType;
- typedef AggrT AggregatedType;
+ using NodeAllocatorType = BTreeNodeAllocator<KeyT, DataT, AggrT, INTERNAL_SLOTS, LEAF_SLOTS>;
+ using InternalNodeType = BTreeInternalNode<KeyT, AggrT, INTERNAL_SLOTS>;
+ using LeafNodeType = BTreeLeafNode<KeyT, DataT, AggrT, LEAF_SLOTS>;
+ using AggregatedType = AggrT;
static AggrT aggregate(const LeafNodeType &node, AggrCalcT aggrCalc);
static AggrT aggregate(const InternalNodeType &node, const NodeAllocatorType &allocator, AggrCalcT aggrCalc);
- static void
- recalc(LeafNodeType &node, const AggrCalcT &aggrCalc);
+ static void recalc(LeafNodeType &node, const AggrCalcT &aggrCalc);
- static void
- recalc(LeafNodeType &node,
- const NodeAllocatorType &allocator,
- const AggrCalcT &aggrCalc)
- {
- (void) allocator;
+ static void recalc(LeafNodeType &node, const NodeAllocatorType &, const AggrCalcT &aggrCalc) {
recalc(node, aggrCalc);
}
- static void
- recalc(InternalNodeType &node,
- const NodeAllocatorType &allocator,
- const AggrCalcT &aggrCalc);
-
- static AggregatedType
- recalc(LeafNodeType &node,
- LeafNodeType &splitNode,
- const AggrCalcT &aggrCalc);
+ static void recalc(InternalNodeType &node, const NodeAllocatorType &allocator, const AggrCalcT &aggrCalc);
+ static AggregatedType recalc(LeafNodeType &node, LeafNodeType &splitNode, const AggrCalcT &aggrCalc);
- static AggregatedType
- recalc(InternalNodeType &node,
- InternalNodeType &splitNode,
- const NodeAllocatorType &allocator,
- const AggrCalcT &aggrCalc);
+ static AggregatedType recalc(InternalNodeType &node, InternalNodeType &splitNode,
+ const NodeAllocatorType &allocator, const AggrCalcT &aggrCalc);
};
-} // namespace search::btree
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/btree/btreeaggregator.hpp b/searchlib/src/vespa/searchlib/btree/btreeaggregator.hpp
index 5a424fb55ff..e1318ab5a66 100644
--- a/searchlib/src/vespa/searchlib/btree/btreeaggregator.hpp
+++ b/searchlib/src/vespa/searchlib/btree/btreeaggregator.hpp
@@ -4,11 +4,7 @@
#include "btreeaggregator.h"
-namespace search
-{
-
-namespace btree
-{
+namespace search::btree {
template <typename KeyT, typename DataT, typename AggrT,
size_t INTERNAL_SLOTS, size_t LEAF_SLOTS, class AggrCalcT>
@@ -93,7 +89,4 @@ BTreeAggregator<KeyT, DataT, AggrT, INTERNAL_SLOTS, LEAF_SLOTS, AggrCalcT>::
return a;
}
-
-} // namespace search::btree
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/btree/minmaxaggrcalc.h b/searchlib/src/vespa/searchlib/btree/minmaxaggrcalc.h
index ef543905155..b33422ec3e3 100644
--- a/searchlib/src/vespa/searchlib/btree/minmaxaggrcalc.h
+++ b/searchlib/src/vespa/searchlib/btree/minmaxaggrcalc.h
@@ -2,10 +2,9 @@
#pragma once
-namespace search
-{
-namespace btree
-{
+#include "minmaxaggregated.h"
+
+namespace search::btree {
class MinMaxAggrCalc
{
@@ -48,7 +47,4 @@ public:
}
};
-
-} // namespace search::btree
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/btree/minmaxaggregated.h b/searchlib/src/vespa/searchlib/btree/minmaxaggregated.h
index 65dd4839020..add570a6e6b 100644
--- a/searchlib/src/vespa/searchlib/btree/minmaxaggregated.h
+++ b/searchlib/src/vespa/searchlib/btree/minmaxaggregated.h
@@ -3,10 +3,9 @@
#pragma once
#include <limits>
-#include <stdint.h>
+#include <cstdint>
-namespace search {
-namespace btree {
+namespace search::btree {
class MinMaxAggregated
{
@@ -103,7 +102,4 @@ public:
}
};
-
-} // namespace search::btree
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/btree/noaggrcalc.h b/searchlib/src/vespa/searchlib/btree/noaggrcalc.h
index 2b3fafb6624..e77e8bc204a 100644
--- a/searchlib/src/vespa/searchlib/btree/noaggrcalc.h
+++ b/searchlib/src/vespa/searchlib/btree/noaggrcalc.h
@@ -2,10 +2,9 @@
#pragma once
-namespace search
-{
-namespace btree
-{
+#include "noaggregated.h"
+
+namespace search::btree {
class NoAggrCalc
{
@@ -92,7 +91,4 @@ public:
}
};
-
-} // namespace search::btree
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/btree/noaggregated.h b/searchlib/src/vespa/searchlib/btree/noaggregated.h
index 33533f18014..e16465f5e0a 100644
--- a/searchlib/src/vespa/searchlib/btree/noaggregated.h
+++ b/searchlib/src/vespa/searchlib/btree/noaggregated.h
@@ -2,10 +2,7 @@
#pragma once
-namespace search
-{
-namespace btree
-{
+namespace search::btree {
class NoAggregated
{
@@ -15,7 +12,4 @@ public:
bool operator!=(const NoAggregated &) const { return false; }
};
-
-} // namespace search::btree
-} // namespace search
-
+}