query: in related/threaded mode, search all
In the related query, search _all_ messages, not just the amount asked; this increases the chance of full threads.
This commit is contained in:
@ -186,13 +186,15 @@ Query::Private::run_related (const std::string& expr, MuMsgFieldId sortfieldid,
|
|||||||
const auto mset{enq.get_mset(0, maxnum, {},
|
const auto mset{enq.get_mset(0, maxnum, {},
|
||||||
make_leader_decider(leader_qflags, minfo).get())};
|
make_leader_decider(leader_qflags, minfo).get())};
|
||||||
|
|
||||||
// Now, determine the "related query"
|
// Now, determine the "related query". In the threaded-case, we search
|
||||||
|
// among _all_ messages, since complete threads are preferred.
|
||||||
auto r_enq{make_related_enquire(enq.get_query(), minfo.thread_ids,
|
auto r_enq{make_related_enquire(enq.get_query(), minfo.thread_ids,
|
||||||
threading ? MU_MSG_FIELD_ID_NONE :sortfieldid, qflags)};
|
threading ? MU_MSG_FIELD_ID_NONE : sortfieldid, qflags)};
|
||||||
const auto r_mset{r_enq.get_mset(0, maxnum, {}, make_related_decider(qflags, minfo).get())};
|
const auto r_mset{r_enq.get_mset(0, threading ? store_.size() : maxnum,
|
||||||
|
{}, make_related_decider(qflags, minfo).get())};
|
||||||
|
|
||||||
auto qres{QueryResults{r_mset, std::move(minfo.matches)}};
|
auto qres{QueryResults{r_mset, std::move(minfo.matches)}};
|
||||||
if (none_of(qflags & QueryFlags::Threading))
|
if (!threading)
|
||||||
return qres;
|
return qres;
|
||||||
else
|
else
|
||||||
return run_threaded(qres, r_enq, sortfieldid, qflags, maxnum);
|
return run_threaded(qres, r_enq, sortfieldid, qflags, maxnum);
|
||||||
|
|||||||
Reference in New Issue
Block a user