diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-02-27 19:23:18 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-04 00:58:59 +0000 |
commit | 56bc0abbc63a08cae1564d992569f97456b26227 (patch) | |
tree | ece295459a8b7733d1927c5d416f4cc01313fcf9 | |
parent | 572fb49e01a32349a763a51d3992798b00738393 (diff) |
andnot_hits_into was more code than worthwile.
8 files changed, 1 insertions, 98 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/attributeiterators.h b/searchlib/src/vespa/searchlib/attribute/attributeiterators.h index 0a1e4516b12..9b920e318f7 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributeiterators.h +++ b/searchlib/src/vespa/searchlib/attribute/attributeiterators.h @@ -26,8 +26,6 @@ protected: template <typename SC> void or_hits_into(const SC & sc, BitVector & result, uint32_t begin_id) const; template <typename SC> - void andnot_hits_into(const SC & sc, BitVector & result, uint32_t begin_id) const; - template <typename SC> std::unique_ptr<BitVector> get_hits(const SC & sc, uint32_t begin_id) const; void visitMembers(vespalib::ObjectVisitor &visitor) const override; fef::TermFieldMatchData * _matchData; @@ -82,7 +80,6 @@ private: void and_hits_into(BitVector & result, uint32_t begin_id) override; void or_hits_into(BitVector & result, uint32_t begin_id) override; std::unique_ptr<BitVector> get_hits(uint32_t begin_id) override; - void andnot_hits_into(BitVector &result, uint32_t begin_id) override; protected: const SC & _searchContext; @@ -101,7 +98,6 @@ private: void visitMembers(vespalib::ObjectVisitor &visitor) const override; void and_hits_into(BitVector & result, uint32_t begin_id) override; void or_hits_into(BitVector & result, uint32_t begin_id) override; - void andnot_hits_into(BitVector &result, uint32_t begin_id) override; std::unique_ptr<BitVector> get_hits(uint32_t begin_id) override; protected: @@ -220,7 +216,6 @@ private: std::unique_ptr<BitVector> get_hits(uint32_t begin_id) override; void or_hits_into(BitVector &result, uint32_t begin_id) override; void and_hits_into(BitVector &result, uint32_t begin_id) override; - void andnot_hits_into(BitVector &result, uint32_t begin_id) override; public: // Note: iterator constructor argument is destroyed @@ -238,7 +233,6 @@ public: std::unique_ptr<BitVector> get_hits(uint32_t begin_id) override; void or_hits_into(BitVector &result, uint32_t begin_id) override; void and_hits_into(BitVector &result, uint32_t begin_id) override; - void andnot_hits_into(BitVector &result, uint32_t begin_id) override; private: queryeval::MinMaxPostingInfo _postingInfo; @@ -345,7 +339,6 @@ protected: void or_hits_into(BitVector &result, uint32_t begin_id) override; void and_hits_into(BitVector &result, uint32_t begin_id) override; - void andnot_hits_into(BitVector &result, uint32_t begin_id) override; std::unique_ptr<BitVector> get_hits(uint32_t begin_id) override; public: diff --git a/searchlib/src/vespa/searchlib/attribute/attributeiterators.hpp b/searchlib/src/vespa/searchlib/attribute/attributeiterators.hpp index a985d0e6b89..ca88328f07b 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributeiterators.hpp +++ b/searchlib/src/vespa/searchlib/attribute/attributeiterators.hpp @@ -25,11 +25,6 @@ AttributeIteratorBase::or_hits_into(const SC & sc, BitVector & result, uint32_t result.foreach_falsebit([&](uint32_t key) { if ( sc.cmp(key)) { result.setBit(key); }}, begin_id); } -template <typename SC> -void -AttributeIteratorBase::andnot_hits_into(const SC & sc, BitVector & result, uint32_t begin_id) const { - result.foreach_truebit([&](uint32_t key) { if ( sc.cmp(key)) { result.clearBit(key); }}, begin_id); -} template <typename SC> std::unique_ptr<BitVector> @@ -126,17 +121,6 @@ AttributePostingListIteratorT<PL>::or_hits_into(BitVector & result, uint32_t beg template <typename PL> void -AttributePostingListIteratorT<PL>::andnot_hits_into(BitVector & result, uint32_t begin_id) { - (void) begin_id; - for (; _iterator.valid() && _iterator.getKey() < getEndId(); ++_iterator) { - if ( result.testBit(_iterator.getKey()) ) { - result.clearBit(_iterator.getKey()); - } - } -} - -template <typename PL> -void AttributePostingListIteratorT<PL>::and_hits_into(BitVector &result, uint32_t begin_id) { result.andWith(*get_hits(begin_id)); } @@ -162,16 +146,6 @@ FilterAttributePostingListIteratorT<PL>::or_hits_into(BitVector & result, uint32 } } -template <typename PL> -void -FilterAttributePostingListIteratorT<PL>::andnot_hits_into(BitVector & result, uint32_t begin_id) { - (void) begin_id; - for (; _iterator.valid() && _iterator.getKey() < getEndId(); ++_iterator) { - if ( result.testBit(_iterator.getKey()) ) { - result.clearBit(_iterator.getKey()); - } - } -} template <typename PL> void @@ -324,19 +298,6 @@ FlagAttributeIteratorT<SC>::and_hits_into(BitVector &result, uint32_t begin_id) } template <typename SC> -void -FlagAttributeIteratorT<SC>::andnot_hits_into(BitVector &result, uint32_t begin_id) { - const SC & sc(_sc); - const typename SC::Attribute &attr = static_cast<const typename SC::Attribute &>(sc.attribute()); - for (int i = sc._low; i < sc._high; i++) { - const BitVector * bv = attr.getBitVector(i); - if (bv != NULL) { - result.andNotWith(*bv); - } - } -} - -template <typename SC> std::unique_ptr<BitVector> FlagAttributeIteratorT<SC>::get_hits(uint32_t begin_id) { const SC & sc(_sc); @@ -451,16 +412,5 @@ FilterAttributeIteratorT<SC>::and_hits_into(BitVector & result, uint32_t begin_i AttributeIteratorBase::and_hits_into(_searchContext, result, begin_id); } -template <typename SC> -void -AttributeIteratorT<SC>::andnot_hits_into(BitVector & result, uint32_t begin_id) { - AttributeIteratorBase::andnot_hits_into(_searchContext, result, begin_id); -} - -template <typename SC> -void -FilterAttributeIteratorT<SC>::andnot_hits_into(BitVector & result, uint32_t begin_id) { - AttributeIteratorBase::andnot_hits_into(_searchContext, result, begin_id); -} } // namespace search diff --git a/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp b/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp index 9c4627835d7..d1dffa3832d 100644 --- a/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp +++ b/searchlib/src/vespa/searchlib/common/bitvectoriterator.cpp @@ -125,10 +125,4 @@ void BitVectorIterator::and_hits_into(BitVector &result, uint32_t begin_id) { result.andWith(_bv); } -void BitVectorIterator::andnot_hits_into(BitVector &result, uint32_t begin_id) { - (void) begin_id; - result.andNotWith(_bv); -} - - } // namespace search diff --git a/searchlib/src/vespa/searchlib/common/bitvectoriterator.h b/searchlib/src/vespa/searchlib/common/bitvectoriterator.h index 76f2e21c0c2..92b3dfbf3fa 100644 --- a/searchlib/src/vespa/searchlib/common/bitvectoriterator.h +++ b/searchlib/src/vespa/searchlib/common/bitvectoriterator.h @@ -2,8 +2,8 @@ #pragma once -#include <vespa/searchlib/queryeval/searchiterator.h> #include "bitvector.h" +#include <vespa/searchlib/queryeval/searchiterator.h> namespace search { @@ -26,7 +26,6 @@ private: BitVector::UP get_hits(uint32_t begin_id) override; void or_hits_into(BitVector &result, uint32_t begin_id) override; void and_hits_into(BitVector &result, uint32_t begin_id) override; - void andnot_hits_into(BitVector &result, uint32_t begin_id) override; bool isBitVector() const override { return true; } fef::TermFieldMatchData &_tfmd; public: diff --git a/searchlib/src/vespa/searchlib/queryeval/orsearch.cpp b/searchlib/src/vespa/searchlib/queryeval/orsearch.cpp index 967e3136fa8..5d30598db07 100644 --- a/searchlib/src/vespa/searchlib/queryeval/orsearch.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/orsearch.cpp @@ -85,13 +85,6 @@ void OrSearch::and_hits_into(BitVector &result, uint32_t begin_id) { result.andWith(*get_hits(begin_id)); } - -void -OrSearch::andnot_hits_into(BitVector &result, uint32_t begin_id) { - for (SearchIterator * child : getChildren()) { - child->andnot_hits_into(result, begin_id); - } -} void OrSearch::or_hits_into(BitVector &result, uint32_t begin_id) diff --git a/searchlib/src/vespa/searchlib/queryeval/orsearch.h b/searchlib/src/vespa/searchlib/queryeval/orsearch.h index d4af6c35490..3452ae1ab96 100644 --- a/searchlib/src/vespa/searchlib/queryeval/orsearch.h +++ b/searchlib/src/vespa/searchlib/queryeval/orsearch.h @@ -23,7 +23,6 @@ public: std::unique_ptr<BitVector> get_hits(uint32_t begin_id) override; void or_hits_into(BitVector &result, uint32_t begin_id) override; void and_hits_into(BitVector &result, uint32_t begin_id) override; - void andnot_hits_into(BitVector &result, uint32_t begin_id) override; protected: OrSearch(const Children & children) : MultiSearch(children) { } diff --git a/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp b/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp index 21f031f76a3..5ab9fd4850a 100644 --- a/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp @@ -78,29 +78,6 @@ SearchIterator::and_hits_into(BitVector &result, uint32_t begin_id) } } -void -SearchIterator::andnot_hits_into(BitVector &result, uint32_t begin_id) -{ - uint32_t docidA = begin_id - 1; - uint32_t docidB = result.getNextTrueBit(begin_id); - while (!isAtEnd(docidA) && !isAtEnd(docidB)) { - if (docidA < docidB) { - if (seek(docidB)) { - docidA = docidB; - } else if (getDocId() > docidB) { - docidA = getDocId(); - } else { - docidB = result.getNextTrueBit(docidB+1); - } - } else if (docidA > docidB) { - docidB = result.getNextTrueBit(docidA); - } else { - result.clearBit(docidB); - docidB = result.getNextTrueBit(docidB+1); - } - } -} - vespalib::string SearchIterator::asString() const { diff --git a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h index acf28133ee3..83818c5d9cc 100644 --- a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h +++ b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h @@ -165,8 +165,6 @@ public: **/ virtual void and_hits_into(BitVector &result, uint32_t begin_id); - virtual void andnot_hits_into(BitVector &result, uint32_t begin_id); - public: typedef std::unique_ptr<SearchIterator> UP; |