]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Search.pm
inbox: add ->version method
[public-inbox.git] / lib / PublicInbox / Search.pm
index 65c6ee831925cd225a74ead0dfdcba426fa1b4a5..5e820594c3777b322b2a36997cb08d50c95e9403 100644 (file)
@@ -13,8 +13,6 @@ use constant YYYYMMDD => 1; # Date: header for searching in the WWW UI
 use constant DT => 2; # Date: YYYYMMDDHHMMSS
 
 use PublicInbox::SearchMsg;
-use PublicInbox::MIME;
-use PublicInbox::MID qw/id_compress/;
 use PublicInbox::Over;
 my $QP_FLAGS;
 our %X = map { $_ => 0 } qw(BoolWeight Database Enquire
@@ -49,7 +47,7 @@ sub load_xapian () {
                # or make indexlevel=medium as default
                $QP_FLAGS = FLAG_PHRASE() | FLAG_BOOLEAN() | FLAG_LOVEHATE() |
                                FLAG_WILDCARD();
-               last;
+               return 1;
        }
        undef;
 }
@@ -200,7 +198,7 @@ sub new {
        my $self = bless {
                inboxdir => $ibx->{inboxdir},
                altid => $ibx->{altid},
-               version => $ibx->{version} // 1,
+               version => $ibx->version,
        }, $class;
        my $dir = xdir($self, 1);
        $self->{over_ro} = PublicInbox::Over->new("$dir/over.sqlite3");
@@ -231,15 +229,15 @@ sub query {
 }
 
 sub retry_reopen {
-       my ($self, $cb) = @_;
+       my ($self, $cb, $arg) = @_;
        for my $i (1..10) {
                if (wantarray) {
                        my @ret;
-                       eval { @ret = $cb->() };
+                       eval { @ret = $cb->($arg) };
                        return @ret unless $@;
                } else {
                        my $ret;
-                       eval { $ret = $cb->() };
+                       eval { $ret = $cb->($arg) };
                        return $ret unless $@;
                }
                # Exception: The revision being read has been discarded -
@@ -259,11 +257,11 @@ sub retry_reopen {
 
 sub _do_enquire {
        my ($self, $query, $opts) = @_;
-       retry_reopen($self, sub { _enquire_once($self, $query, $opts) });
+       retry_reopen($self, \&_enquire_once, [ $self, $query, $opts ]);
 }
 
-sub _enquire_once {
-       my ($self, $query, $opts) = @_;
+sub _enquire_once { # retry_reopen callback
+       my ($self, $query, $opts) = @{$_[0]};
        my $xdb = xdb($self);
        my $enquire = $X{Enquire}->new($xdb);
        $enquire->set_query($query);
@@ -281,9 +279,7 @@ sub _enquire_once {
        my $limit = $opts->{limit} || 50;
        my $mset = $enquire->get_mset($offset, $limit);
        return $mset if $opts->{mset};
-       my @msgs = map {
-               PublicInbox::SearchMsg->load_doc($_->get_document);
-       } $mset->items;
+       my @msgs = map { PublicInbox::SearchMsg::from_mitem($_) } $mset->items;
        return \@msgs unless wantarray;
 
        ($mset->get_matches_estimated, \@msgs)
@@ -338,11 +334,6 @@ EOF
        $self->{query_parser} = $qp;
 }
 
-sub lookup_article {
-       my ($self, $num) = @_;
-       $self->{over_ro}->get_art($num);
-}
-
 sub help {
        my ($self) = @_;
        $self->qp; # parse altids