- # refill result set
- $res = $self->{cb}->($self->{opts});
- $self->{msgs} = $res->{msgs};
- $res = scalar @{$self->{msgs}};
- $self->{opts}->{offset} += $res;
- } while ($res);
- $gz->close;
- delete $self->{ctx};
- ${delete $self->{buf}};
+ my $qopts = $ctx->{qopts} = { relevance => -2 }; # ORDER BY docid DESC
+ $qopts->{threads} = 1 if $q->{t};
+ $srch->query_approxidate($ctx->{ibx}->git, $q_string);
+ my $mset = $srch->mset($q_string, $qopts);
+ $qopts->{offset} = $mset->size or
+ return [404, [qw(Content-Type text/plain)],
+ ["No results found\n"]];
+ $ctx->{query} = $q_string;
+ $ctx->{ids} = $srch->mset_to_artnums($mset, $qopts);
+ require PublicInbox::MboxGz;
+ my $fn;
+ if ($q->{t} && $srch->has_threadid) {
+ $fn = 'results-thread-'.$q_string;
+ PublicInbox::MboxGz::mbox_gz($ctx, \&results_thread_cb, $fn);
+ } else {
+ $fn = 'results-'.$q_string;
+ PublicInbox::MboxGz::mbox_gz($ctx, \&results_cb, $fn);
+ }