]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
search: hoist out do_enquire for codesearch
authorEric Wong <e@80x24.org>
Fri, 9 Jun 2023 10:31:07 +0000 (10:31 +0000)
committerEric Wong <e@80x24.org>
Fri, 9 Jun 2023 18:58:28 +0000 (18:58 +0000)
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
lib/PublicInbox/Search.pm

index 1dfc124f7dfc5959d1481d2da2b4b194660f2bd6..a5ccce031ee476c9aea4312b332648faa05ceb2d 100644 (file)
@@ -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;
index 6986cb88e5a7fbc97078f2218be3e795fbf09ac9..a4fef17ba50b5becaee72c71f0009ad18b71b17a 100644 (file)
@@ -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