- my $m = PublicInbox::SearchMsg->load_doc($i->get_document);
- $pct{$m->mid} = $i->get_percent;
- $m = $m->mini_mime;
- $m;
- } ($mset->items);
-
- my $th = PublicInbox::Thread->new(@m);
- $th->thread;
- if ($q->{r}) { # order by relevance
- $th->order(sub {
- sort { (eval { $pct{$b->topmost->messageid} } || 0)
- <=>
- (eval { $pct{$a->topmost->messageid} } || 0)
- } @_;
- });
- } else { # order by time (default for threaded view)
- $th->order(*PublicInbox::View::sort_ts);
- }
- my $skel = '';
- my $state = {
- -inbox => $ctx->{-inbox},
- anchor_idx => 1,
- ctx => $ctx,
- cur_level => 0,
- dst => \$skel,
- fh => $fh,
- mapping => {},
- pct => \%pct,
- prev_attr => '',
- prev_level => 0,
- seen => {},
- srch => $ctx->{srch},
- upfx => './',
- };
- $ctx->{searchview} = 1;
- PublicInbox::View::walk_thread($th, $state,
+ my $smsg = PublicInbox::SearchMsg->load_doc($i->get_document);
+ $pct{$smsg->mid} = $i->get_percent;
+ $smsg;
+ } ($mset->items) ]});
+ my $r = $q->{r};
+ my $rootset = PublicInbox::SearchThread::thread($msgs,
+ $r ? sort_relevance(\%pct) : *PublicInbox::View::sort_ds,
+ $ctx);
+ my $skel = search_nav_bot($mset, $q). "<pre>";
+ my $ibx = $ctx->{-inbox};
+ $ctx->{-upfx} = '';
+ $ctx->{anchor_idx} = 1;
+ $ctx->{cur_level} = 0;
+ $ctx->{dst} = \$skel;
+ $ctx->{mapping} = {};
+ $ctx->{pct} = \%pct;
+ $ctx->{prev_attr} = '';
+ $ctx->{prev_level} = 0;
+ $ctx->{s_nr} = scalar(@$msgs).'+ results';
+
+ # reduce hash lookups in skel_dump
+ $ctx->{-obfuscate} = $ctx->{-inbox}->{obfuscate};
+ PublicInbox::View::walk_thread($rootset, $ctx,