mirror of
https://github.com/djcb/mu.git
synced 2024-06-26 07:29:17 +02:00
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;
|
MuMsgFieldId sortfieldid, QueryFlags qflags) const;
|
||||||
|
|
||||||
Option<QueryResults> run_threaded (QueryResults&& qres, Xapian::Enquire& enq,
|
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,
|
Option<QueryResults> run_singular (const std::string& expr, MuMsgFieldId sortfieldid,
|
||||||
QueryFlags qflags, size_t maxnum) const;
|
QueryFlags qflags, size_t maxnum) const;
|
||||||
Option<QueryResults> run_related (const std::string& expr, MuMsgFieldId sortfieldid,
|
Option<QueryResults> run_related (const std::string& expr, MuMsgFieldId sortfieldid,
|
||||||
|
@ -128,7 +128,7 @@ struct ThreadKeyMaker: public Xapian::KeyMaker {
|
||||||
|
|
||||||
Option<QueryResults>
|
Option<QueryResults>
|
||||||
Query::Private::run_threaded (QueryResults&& qres, Xapian::Enquire& enq,
|
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)};
|
const auto descending{any_of(qflags & QueryFlags::Descending)};
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ Query::Private::run_threaded (QueryResults&& qres, Xapian::Enquire& enq,
|
||||||
|
|
||||||
DeciderInfo minfo;
|
DeciderInfo minfo;
|
||||||
minfo.matches = qres.query_matches();
|
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())};
|
make_thread_decider(qflags, minfo).get())};
|
||||||
mset.fetch();
|
mset.fetch();
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ Query::Private::run_singular (const std::string& expr, MuMsgFieldId sortfieldid,
|
||||||
|
|
||||||
auto qres{QueryResults{mset, std::move(minfo.matches)}};
|
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())};
|
{}, make_related_decider(qflags, minfo).get())};
|
||||||
auto qres{QueryResults{r_mset, std::move(minfo.matches)}};
|
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>
|
Option<QueryResults>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user