about summary refs log tree commit homepage
path: root/lib/PublicInbox/Search.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Search.pm')
-rw-r--r--lib/PublicInbox/Search.pm19
1 files changed, 7 insertions, 12 deletions
diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm
index bbc5e32f..bca2036c 100644
--- a/lib/PublicInbox/Search.pm
+++ b/lib/PublicInbox/Search.pm
@@ -196,6 +196,7 @@ sub xdb_shards_flat ($) {
         my ($self) = @_;
         my $xpfx = $self->{xpfx};
         my (@xdb, $slow_phrase);
+        load_xapian();
         if ($xpfx =~ m/xapian${\SCHEMA_VERSION}\z/) {
                 @xdb = ($X{Database}->new($xpfx));
                 $self->{qp_flags} |= FLAG_PHRASE() if !-f "$xpfx/iamchert";
@@ -214,16 +215,6 @@ sub xdb_shards_flat ($) {
         @xdb;
 }
 
-sub _xdb {
-        my ($self) = @_;
-        $self->{qp_flags} //= $QP_FLAGS;
-        my @xdb = xdb_shards_flat($self) or return;
-        $self->{nshard} = scalar(@xdb);
-        my $xdb = shift @xdb;
-        $xdb->add_database($_) for @xdb;
-        $xdb;
-}
-
 # v2 Xapian docids don't conflict, so they're identical to
 # NNTP article numbers and IMAP UIDs.
 # https://trac.xapian.org/wiki/FAQ/MultiDatabaseDocumentID
@@ -242,8 +233,12 @@ sub mset_to_artnums {
 sub xdb ($) {
         my ($self) = @_;
         $self->{xdb} //= do {
-                load_xapian();
-                $self->_xdb;
+                $self->{qp_flags} //= $QP_FLAGS;
+                my @xdb = $self->xdb_shards_flat or return;
+                $self->{nshard} = scalar(@xdb);
+                my $xdb = shift @xdb;
+                $xdb->add_database($_) for @xdb;
+                $xdb;
         };
 }