query: honor maxnum in threaded searches

This commit is contained in:
Dirk-Jan C. Binnema 2021-02-15 22:45:33 +02:00
parent 45655da948
commit 98a742e5e5
1 changed files with 5 additions and 5 deletions

View File

@ -50,7 +50,7 @@ struct Query::Private {
MuMsgFieldId sortfieldid, QueryFlags qflags) const;
Option<QueryResults> run_threaded (QueryResults&& qres, Xapian::Enquire& enq,
QueryFlags qflags) const;
QueryFlags qflags, size_t max_size) const;
Option<QueryResults> run_singular (const std::string& expr, MuMsgFieldId sortfieldid,
QueryFlags qflags, size_t maxnum) const;
Option<QueryResults> run_related (const std::string& expr, MuMsgFieldId sortfieldid,
@ -128,7 +128,7 @@ struct ThreadKeyMaker: public Xapian::KeyMaker {
Option<QueryResults>
Query::Private::run_threaded (QueryResults&& qres, Xapian::Enquire& enq,
QueryFlags qflags) const
QueryFlags qflags, size_t max_size) const
{
const auto descending{any_of(qflags & QueryFlags::Descending)};
@ -139,7 +139,7 @@ Query::Private::run_threaded (QueryResults&& qres, Xapian::Enquire& enq,
DeciderInfo minfo;
minfo.matches = qres.query_matches();
auto mset{enq.get_mset(0, qres.size(), {},
auto mset{enq.get_mset(0, max_size, {},
make_thread_decider(qflags, minfo).get())};
mset.fetch();
@ -171,7 +171,7 @@ Query::Private::run_singular (const std::string& expr, MuMsgFieldId sortfieldid,
auto qres{QueryResults{mset, std::move(minfo.matches)}};
return threading ? run_threaded(std::move(qres), enq, qflags) : qres;
return threading ? run_threaded(std::move(qres), enq, qflags, maxnum) : qres;
}
@ -206,7 +206,7 @@ Query::Private::run_related (const std::string& expr, MuMsgFieldId sortfieldid,
{}, make_related_decider(qflags, minfo).get())};
auto qres{QueryResults{r_mset, std::move(minfo.matches)}};
return threading ? run_threaded(std::move(qres), r_enq, qflags) : qres;
return threading ? run_threaded(std::move(qres), r_enq, qflags, maxnum) : qres;
}
Option<QueryResults>