summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-06-22 16:45:55 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2017-06-22 16:45:55 +0200
commit53f3e7df59175656e067c2732503309b0b474edb (patch)
tree352a20e9a23f19f7e34a9653833a2b8af23bdf0f /searchlib
parent7ec35f103e2b4aaf806774c9fe6cde2d7312cdb3 (diff)
Add a searchStrict method on SimpleResult that takes docIdLimit.
Set docId limit on the BlackListBlueprint.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp16
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simpleresult.h1
2 files changed, 15 insertions, 2 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp b/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp
index edadce756c1..e43c192a74d 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp
@@ -34,12 +34,24 @@ SimpleResult::search(SearchIterator &sb)
}
void
+SimpleResult::searchStrict(SearchIterator &sb, uint32_t docIdLimit)
+{
+ clear();
+ // assume strict toplevel search object located at start
+ sb.initRange(1, docIdLimit);
+ for (sb.seek(1); !sb.isAtEnd(); sb.seek(sb.getDocId() + 1)) {
+ sb.unpack(sb.getDocId());
+ _hits.push_back(sb.getDocId());
+ }
+}
+
+void
SimpleResult::search(SearchIterator &sb, uint32_t docIdLimit)
{
clear();
// assume non-strict toplevel search object
- sb.initFullRange();
- for (uint32_t docId = 1; docId < docIdLimit; ++docId) {
+ sb.initRange(1, docIdLimit);
+ for (uint32_t docId = 1; !sb.isAtEnd(docId); ++docId) {
if (sb.seek(docId)) {
assert(docId == sb.getDocId());
sb.unpack(docId);
diff --git a/searchlib/src/vespa/searchlib/queryeval/simpleresult.h b/searchlib/src/vespa/searchlib/queryeval/simpleresult.h
index 0729f13e4b1..c7755758fa8 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simpleresult.h
+++ b/searchlib/src/vespa/searchlib/queryeval/simpleresult.h
@@ -60,6 +60,7 @@ public:
* @param sb search object
**/
void search(SearchIterator &sb);
+ void searchStrict(SearchIterator &sb, uint32_t docIdLimit);
/**
* Fill this result with all the hits returned by the given search