about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2020-08-20 20:24:47 +0000
committerEric Wong <e@yhbt.net>2020-08-20 21:11:16 +0000
commit713b42f9c78b3963797ac988456d0c6d20375db1 (patch)
tree1575598b3a0d9cb0c3e6b4c59eb337e4193cbaf6 /lib
parent3dac753c5c7bf3846d9aeff86815ecb69798b55e (diff)
downloadpublic-inbox-713b42f9c78b3963797ac988456d0c6d20375db1.tar.gz
We'll probably be reusing it from another package in a future commit.
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/Search.pm16
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm
index f98513d3..e6200bfb 100644
--- a/lib/PublicInbox/Search.pm
+++ b/lib/PublicInbox/Search.pm
@@ -265,7 +265,7 @@ sub query {
         if ($query_string eq '' && !$opts->{mset}) {
                 $self->{over_ro}->recent($opts);
         } else {
-                my $qp = qp($self);
+                my $qp = $self->{qp} //= qparse_new($self);
                 my $qp_flags = $self->{qp_flags};
                 my $query = $qp->parse_query($query_string, $qp_flags);
                 $opts->{relevance} = 1 unless exists $opts->{relevance};
@@ -334,17 +334,14 @@ sub _enquire_once { # retry_reopen callback
 sub stemmer { $X{Stem}->new($LANG) }
 
 # read-only
-sub qp {
+sub qparse_new ($) {
         my ($self) = @_;
 
-        my $qp = $self->{query_parser};
-        return $qp if $qp;
         my $xdb = xdb($self);
-        # new parser
-        $qp = $X{QueryParser}->new;
+        my $qp = $X{QueryParser}->new;
         $qp->set_default_op(OP_AND());
         $qp->set_database($xdb);
-        $qp->set_stemmer($self->stemmer);
+        $qp->set_stemmer(stemmer($self));
         $qp->set_stemming_strategy(STEM_SOME());
         $qp->set_max_wildcard_expansion(100);
         my $nvrp = $X{NumberValueRangeProcessor};
@@ -382,13 +379,12 @@ EOF
         while (my ($name, $prefix) = each %prob_prefix) {
                 $qp->add_prefix($name, $_) foreach split(/ /, $prefix);
         }
-
-        $self->{query_parser} = $qp;
+        $qp;
 }
 
 sub help {
         my ($self) = @_;
-        $self->qp; # parse altids
+        $self->{qp} //= qparse_new($self); # parse altids
         my @ret = @HELP;
         if (my $user_pfx = $self->{-user_pfx}) {
                 push @ret, @$user_pfx;