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:
Dirk-Jan C. Binnema
2021-01-25 10:12:48 +02:00
parent cec25d3166
commit 086999c2d1

View File

@ -186,13 +186,15 @@ Query::Private::run_related (const std::string& expr, MuMsgFieldId sortfieldid,
const auto mset{enq.get_mset(0, maxnum, {},
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,
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)}};
if (none_of(qflags & QueryFlags::Threading))
if (!threading)
return qres;
else
return run_threaded(qres, r_enq, sortfieldid, qflags, maxnum);