mirror of https://github.com/djcb/mu.git
query: honor maxnum in threaded searches
This commit is contained in:
parent
45655da948
commit
98a742e5e5
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue