mirror of https://github.com/djcb/mu.git
mu-query: honor maxnum for threaded queries
This commit is contained in:
parent
8bb5b0352f
commit
f16f570273
|
@ -49,7 +49,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 maxnum) 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,
|
||||||
|
@ -127,7 +127,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 maxnum) const
|
||||||
{
|
{
|
||||||
const auto descending{any_of(qflags & QueryFlags::Descending)};
|
const auto descending{any_of(qflags & QueryFlags::Descending)};
|
||||||
|
|
||||||
|
@ -138,7 +138,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, store_.size(), {},
|
auto mset{enq.get_mset(0, maxnum, {},
|
||||||
make_thread_decider(qflags, minfo).get())};
|
make_thread_decider(qflags, minfo).get())};
|
||||||
mset.fetch();
|
mset.fetch();
|
||||||
|
|
||||||
|
@ -170,7 +170,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Option<std::string>
|
static Option<std::string>
|
||||||
|
@ -217,7 +217,7 @@ Query::Private::run_related (const std::string& expr, MuMsgFieldId sortfieldid,
|
||||||
const auto r_mset{r_enq.get_mset(0, threading ? store_.size() : maxnum,
|
const auto r_mset{r_enq.get_mset(0, threading ? store_.size() : maxnum,
|
||||||
{}, 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue