diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-06-22 16:45:55 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-06-22 16:45:55 +0200 |
commit | 53f3e7df59175656e067c2732503309b0b474edb (patch) | |
tree | 352a20e9a23f19f7e34a9653833a2b8af23bdf0f /searchlib | |
parent | 7ec35f103e2b4aaf806774c9fe6cde2d7312cdb3 (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.cpp | 16 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/simpleresult.h | 1 |
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 |