aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
index 65c103152d3..f937d567588 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
@@ -127,9 +127,12 @@ PostingListSearchContextT<DataT>::fillBitVector(const ExecuteInfo & exec_info)
parts.emplace_back(exec_info.doom(), _posting_store, parts[i-1]._to, num_this_thread, _merger.getDocIdLimit());
}
thread_bundle.run(parts);
- for (size_t i(1); i < parts.size(); i++) {
- master->orWith(*parts[i]._bv);
+ std::vector<BitVector *> vectors;
+ vectors.reserve(parts.size());
+ for (const auto & part : parts) {
+ vectors.push_back(part._bv);
}
+ BitVector::parallellOr(thread_bundle, vectors);
}
template <typename DataT>
@@ -167,6 +170,7 @@ PostingListSearchContextT<DataT>::fetchPostings(const ExecuteInfo & exec_info)
if (!_merger.merge_done() && _uniqueValues >= 2u && this->_dictionary.get_has_btree_dictionary()) {
if (exec_info.is_strict() || use_posting_lists_when_non_strict(exec_info)) {
size_t sum = estimated_hits_in_range();
+ //TODO Honour soft_doom and forward it to merge code
if (sum < (_docIdLimit * threshold_for_using_array)) {
_merger.reserveArray(_uniqueValues, sum);
fillArray();