aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-05-08 10:38:53 +0200
committerHenning Baldersheim <balder@oath.com>2018-05-08 10:40:07 +0200
commitfd997a0fa17b84904f77f1f6c998c0b19c3a6f1c (patch)
tree5346a873f3871613dc539b2c56e47cd85e2468de
parentf47f0a86044148032f2a3b5e874ce6aa5aa5cc24 (diff)
Require termwise to be at the top.balder/apply-termwise-filters-on-match-phase-2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andnotsearch.h8
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andsearch.h7
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h7
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h7
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/multisearch.h1
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp12
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/ranksearch.h9
7 files changed, 19 insertions, 32 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h
index e805448ef98..393f86316a7 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/andnotsearch.h
@@ -7,8 +7,7 @@
#include <vespa/searchlib/attribute/attributeiterators.h>
#include <vespa/searchlib/attribute/singlesmallnumericattribute.h>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* A simple implementation of the AndNot search operation.
@@ -34,6 +33,7 @@ public:
std::unique_ptr<BitVector> get_hits(uint32_t begin_id) override;
void or_hits_into(BitVector &result, uint32_t begin_id) override;
+ SearchIterator * positive() const { return getChildren()[0]; }
private:
bool isAndNot() const override { return true; }
@@ -71,7 +71,6 @@ public:
}
void initRange(uint32_t beginid, uint32_t endid) override;
private:
- SearchIterator * positive() { return getChildren()[0]; }
BlackListIterator * blackList() { return static_cast<BlackListIterator *>(getChildren()[1]); }
template<bool doSeekOnly>
uint32_t internalSeek(uint32_t docid) {
@@ -97,6 +96,5 @@ private:
void doUnpack(uint32_t docid) override;
};
-} // namespace queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/andsearch.h b/searchlib/src/vespa/searchlib/queryeval/andsearch.h
index 0f3766e18b4..59c5769a1a2 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andsearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/andsearch.h
@@ -5,8 +5,7 @@
#include "multisearch.h"
#include "unpackinfo.h"
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* A simple implementation of the And search operation.
@@ -34,6 +33,4 @@ private:
uint32_t _estimate;
};
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h b/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h
index 1b1a5e77445..25770a8a3df 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h
+++ b/searchlib/src/vespa/searchlib/queryeval/andsearchnostrict.h
@@ -4,8 +4,7 @@
#include "andsearch.h"
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* A simple implementation of the And search operation.
@@ -56,6 +55,4 @@ private:
Unpack _unpacker;
};
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h b/searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h
index 87be4248a0a..939e8fc5576 100644
--- a/searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h
+++ b/searchlib/src/vespa/searchlib/queryeval/andsearchstrict.h
@@ -5,8 +5,7 @@
#include "andsearchnostrict.h"
#include <vespa/fastos/dynamiclibrary.h>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* A simple strict implementation of the And search operation.
@@ -105,6 +104,4 @@ AndSearchStrict<Unpack>::andWith(SearchIterator::UP filter, uint32_t estimate_)
return filter; // Should always be empty, returning it incase logic changes.
}
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/multisearch.h b/searchlib/src/vespa/searchlib/queryeval/multisearch.h
index d67f895ddb5..c6cd7eda82e 100644
--- a/searchlib/src/vespa/searchlib/queryeval/multisearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/multisearch.h
@@ -37,6 +37,7 @@ public:
virtual bool isAnd() const { return false; }
virtual bool isAndNot() const { return false; }
virtual bool isOr() const { return false; }
+ virtual bool isRank() const { return false; }
void insert(size_t index, SearchIterator::UP search);
virtual bool needUnpack(size_t index) const { (void) index; return true; }
void initRange(uint32_t beginId, uint32_t endId) override;
diff --git a/searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp b/searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp
index f499845df1f..d9853f88488 100644
--- a/searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/ranksearch.cpp
@@ -2,13 +2,12 @@
#include "ranksearch.h"
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
void
RankSearch::doSeek(uint32_t docid)
{
- SearchIterator & firstChild(**getChildren().begin());
+ SearchIterator & firstChild(*mandatory());
if (firstChild.seek(docid)) {
setDocId(docid);
}
@@ -39,13 +38,13 @@ public:
SearchIterator::UP
RankSearchStrict::andWith(UP filter, uint32_t estimate)
{
- return getChildren()[0]->andWith(std::move(filter), estimate);
+ return mandatory()->andWith(std::move(filter), estimate);
}
void
RankSearchStrict::doSeek(uint32_t docid)
{
- SearchIterator & firstChild(**getChildren().begin());
+ SearchIterator & firstChild(*mandatory());
setDocId(firstChild.seek(docid) ? docid : firstChild.getDocId());
}
} // namespace
@@ -59,5 +58,4 @@ RankSearch::create(const RankSearch::Children &children, bool strict) {
}
}
-} // namespace queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/ranksearch.h b/searchlib/src/vespa/searchlib/queryeval/ranksearch.h
index 4d5bb3d3bf9..2b5c80633f2 100644
--- a/searchlib/src/vespa/searchlib/queryeval/ranksearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/ranksearch.h
@@ -4,8 +4,7 @@
#include "multisearch.h"
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* A simple implementation of the Rank search operation.
@@ -26,8 +25,8 @@ protected:
public:
// Caller takes ownership of the returned SearchIterator.
static SearchIterator *create(const Children &children, bool strict);
+ SearchIterator * mandatory() const { return getChildren()[0]; }
+ bool isRank() const override { return true; }
};
-} // namespace queryeval
-} // namespace search
-
+}