Reusing this bit seems to make sense as mail and code search
are similar enough w.r.t. setting up sort options.  This
deduplication will become more useful as -cindex will
likely combine code and mail search to generate associations
between inboxes and code repos.
---
 lib/PublicInbox/CodeSearch.pm | 11 +----------
 lib/PublicInbox/Search.pm     |  8 ++++++--
 2 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/lib/PublicInbox/CodeSearch.pm b/lib/PublicInbox/CodeSearch.pm
index 1dfc124f..a5ccce03 100644
--- a/lib/PublicInbox/CodeSearch.pm
+++ b/lib/PublicInbox/CodeSearch.pm
@@ -106,16 +106,7 @@ sub mset {
        $qry = $PublicInbox::Search::X{Query}->new(
                                PublicInbox::Search::OP_FILTER(),
                                $qry, 'T'.'c');
-
-       my $enq = $PublicInbox::Search::X{Enquire}->new($self->xdb);
-       $enq->set_query($qry);
-       if ($opt->{relevance}) {
-               $enq->set_sort_by_relevance_then_value(CT, !$opt->{asc});
-       } else {
-               $enq->set_sort_by_value_then_relevance(CT, !$opt->{asc});
-       }
-       $self->retry_reopen($self->can('enquire_once'), $enq,
-                       $opt->{offset} || 0, $opt->{limit} || 50);
+       $self->do_enquire($qry, $opt, CT);
 }
 
 1;
diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm
index 6986cb88..a4fef17b 100644
--- a/lib/PublicInbox/Search.pm
+++ b/lib/PublicInbox/Search.pm
@@ -390,7 +390,11 @@ sub mset {
                $qry = $X{Query}->new(OP_FILTER(), $qry,
                        $X{Query}->new(OP_VALUE_RANGE(), THREADID, $tid, $tid));
        }
+       do_enquire($self, $qry, $opt, TS);
+}
 
+sub do_enquire { # shared with CodeSearch
+       my ($self, $qry, $opt, $col) = @_;
        my $enq = $X{Enquire}->new(xdb($self));
        $enq->set_query($qry);
        my $rel = $opt->{relevance} // 0;
@@ -401,9 +405,9 @@ sub mset {
                $enq->set_weighting_scheme($X{BoolWeight}->new);
                $enq->set_docid_order($ENQ_ASCENDING);
        } elsif ($rel == 0) {
-               $enq->set_sort_by_value_then_relevance(TS, !$opt->{asc});
+               $enq->set_sort_by_value_then_relevance($col, !$opt->{asc});
        } else { # rel > 0
-               $enq->set_sort_by_relevance_then_value(TS, !$opt->{asc});
+               $enq->set_sort_by_relevance_then_value($col, !$opt->{asc});
        }
 
        # `lei q -t / --threads' or JMAP collapseThreads; but don't collapse

Reply via email to