diff options
author | Henning Baldersheim <balder@oath.com> | 2018-11-05 15:05:00 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-11-05 15:05:00 +0100 |
commit | 6cabf3d40ff50a6157e7ed340b4cfaf95c3930df (patch) | |
tree | ac332a82e20235494d8f45590c19d0d05e8e569c /searchlib | |
parent | a2590c561491ebc087e20fbafca8218240f1bb78 (diff) |
Clean up so all types related to attribute posting lists are defined in one place.
Diffstat (limited to 'searchlib')
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 - +} |