From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 26A1F1F46C for ; Thu, 19 Dec 2019 05:18:02 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 2/2] view: show percentage in search results thread skeleton Date: Thu, 19 Dec 2019 05:18:01 +0000 Message-Id: <20191219051801.31310-3-e@80x24.org> In-Reply-To: <20191219051801.31310-1-e@80x24.org> References: <20191219051801.31310-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: The displays the Xapian ->get_percent value in the skeleton to improve scanning of relevancy; irrelevant results do not display that. This fixes broken #anchor links introduced in the previous commit, irrelevant messages now link to the /$INBOX/$MESSAGE_ID page. --- lib/PublicInbox/View.pm | 20 +++++++++++++++----- t/psgi_v2.t | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 33f71990..5924a2a7 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -950,7 +950,18 @@ sub skel_dump { my $obfs_ibx = $ctx->{-obfs_ibx}; obfuscate_addrs($obfs_ibx, $f) if $obfs_ibx; - my $d = fmt_ts($smsg->{ds}) . ' ' . indent_for($level) . th_pfx($level); + my $d = fmt_ts($smsg->{ds}); + my $unmatched; # if lazy-loaded by SearchThread::Msg::visible() + if (my $pct = $ctx->{pct}) { + $pct = $pct->{$smsg->{mid}}; + if (defined $pct) { + $d .= (sprintf(' % 3u', $pct) . '%'); + } else { + $unmatched = 1; + $d .= ' '; + } + } + $d .= ' ' . indent_for($level) . th_pfx($level); my $attr = $f; $ctx->{first_level} ||= $level; @@ -976,7 +987,6 @@ sub skel_dump { # our Xapian which would've resulted in '' if it were # really missing (and Filter rejects empty subjects) my @subj = split(/ /, subject_normalized($smsg->subject)); - # remove common suffixes from the subject if it matches the previous, # so we do not show redundant text at the end. my $prev_subj = $ctx->{prev_subj} || []; @@ -993,7 +1003,7 @@ sub skel_dump { } my $m; my $id = ''; - my $mapping = $ctx->{mapping}; + my $mapping = $unmatched ? undef : $ctx->{mapping}; if ($mapping) { my $map = $mapping->{$mid}; $id = id_compress($mid, 1); @@ -1011,8 +1021,8 @@ sub _skel_ghost { my ($ctx, $level, $node) = @_; my $mid = $node->{id}; - my $d = $ctx->{pct} ? ' [irrelevant] ' # search result - : ' [not found] '; + my $d = ' [not found] '; + $d .= ' ' if exists $ctx->{pct}; $d .= indent_for($level) . th_pfx($level); my $upfx = $ctx->{-upfx}; my $m = PublicInbox::Hval->new_msgid($mid); diff --git a/t/psgi_v2.t b/t/psgi_v2.t index 8e81e89b..10176516 100644 --- a/t/psgi_v2.t +++ b/t/psgi_v2.t @@ -155,7 +155,7 @@ test_psgi(sub { $www->call(@_) }, sub { is($res->code, 200, 'success with threaded search'); my $raw = $res->content; ok($raw =~ s/\A.*>Results 1-3 of 3\b//s, 'got all results'); - my @over = ($raw =~ m/\d{4}-\d+-\d+\s+\d+:\d+ (.+)$/gm); + my @over = ($raw =~ m/\d{4}-\d+-\d+\s+\d+:\d+ +(?:\d+\% )?(.+)$/gm); is_deeply(\@over, [ '