diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-04-03 20:36:49 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-04-03 20:36:49 +0200 |
commit | b1e3641dc5826ca99558ea51a918542f14568b57 (patch) | |
tree | 148151548e6e6a0de9cd9a3399b1f50a8c990b62 /searchlib | |
parent | 35c74d9abcfa7abb0cc12c1b47d26bac6f24f997 (diff) |
Remove outdated andnot optimization.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp | 32 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/andnotsearch.h | 46 |
2 files changed, 1 insertions, 77 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp index 2307b778381..c7b81bc9da7 100644 --- a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.cpp @@ -105,41 +105,11 @@ AndNotSearchStrict::internalSeek(uint32_t docid) } // namespace -OptimizedAndNotForBlackListing::OptimizedAndNotForBlackListing(MultiSearch::Children children) : - AndNotSearchStrictBase(std::move(children)) -{ -} - -void OptimizedAndNotForBlackListing::initRange(uint32_t beginid, uint32_t endid) -{ - AndNotSearch::initRange(beginid, endid); - setDocId(internalSeek<false>(beginid)); -} - -bool OptimizedAndNotForBlackListing::isBlackListIterator(const SearchIterator * iterator) -{ - return dynamic_cast<const BlackListIterator *>(iterator) != 0; -} - -void OptimizedAndNotForBlackListing::doSeek(uint32_t docid) -{ - setDocId(internalSeek<true>(docid)); -} - -void OptimizedAndNotForBlackListing::doUnpack(uint32_t docid) -{ - positive()->doUnpack(docid); -} - std::unique_ptr<SearchIterator> AndNotSearch::create(ChildrenIterators children_in, bool strict) { MultiSearch::Children children = std::move(children_in); if (strict) { - if ((children.size() == 2) && OptimizedAndNotForBlackListing::isBlackListIterator(children[1].get())) { - return std::make_unique<OptimizedAndNotForBlackListing>(std::move(children)); - } else { - return std::make_unique<AndNotSearchStrict>(std::move(children)); - } + return std::make_unique<AndNotSearchStrict>(std::move(children)); } else { return SearchIterator::UP(new AndNotSearch(std::move(children))); } diff --git a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h index d65a3d9c72e..e474ab7c90c 100644 --- a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h +++ b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h @@ -48,50 +48,4 @@ private: UP andWith(UP filter, uint32_t estimate) override; }; -/** - * This is a specialized andnot iterator you get when you have no andnot's in you query and only get the blacklist blueprint. - * This one is now constructed at getSearch() phase. However this should be better handled in the AndNotBlueprint. - */ -class OptimizedAndNotForBlackListing : public AndNotSearchStrictBase -{ -private: - // This is the actual iterator that should be produced by the documentmetastore in searchcore, but that - // will probably be changed later on. An ordinary bitvector could be even better as that would open up for more optimizations. - //typedef FilterAttributeIteratorT<SingleValueSmallNumericAttribute::SingleSearchContext> BlackListIterator; - typedef AttributeIteratorT<SingleValueSmallNumericAttribute::SingleSearchContext> BlackListIterator; -public: - OptimizedAndNotForBlackListing(MultiSearch::Children children); - static bool isBlackListIterator(const SearchIterator * iterator); - - uint32_t seekFast(uint32_t docid) { - return internalSeek<true>(docid); - } - void initRange(uint32_t beginid, uint32_t endid) override; -private: - SearchIterator * positive() { return getChildren()[0].get(); } - BlackListIterator * blackList() { return static_cast<BlackListIterator *>(getChildren()[1].get()); } - template<bool doSeekOnly> - uint32_t internalSeek(uint32_t docid) { - uint32_t curr(docid); - while (true) { - if (doSeekOnly) { - positive()->doSeek(curr); - } else { - positive()->seek(curr); - } - if ( ! positive()->isAtEnd() ) { - curr = positive()->getDocId(); - if (! blackList()->seekFast(curr)) { - return curr; - } - curr++; - } else { - return search::endDocId; - } - } - } - void doSeek(uint32_t docid) override; - void doUnpack(uint32_t docid) override; -}; - } |