X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FSearch.pm;h=4e014f4ec1214664b37add315fe1f6eef71a8175;hb=a699c1ea84e9bb2ebd76a1bf1094b686bc520bda;hp=91251246ccf4ddf20a94af806787aae89637d14a;hpb=35ff6bb106909b1c1232666a9792156dfa398ea8;p=public-inbox.git diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index 91251246..4e014f4e 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -179,16 +179,22 @@ sub query { } sub get_thread { - my ($self, $mid, $opts) = @_; - $self->{over_ro}->get_thread($mid, $opts); + my ($self, $mid, $prev) = @_; + $self->{over_ro}->get_thread($mid, $prev); } sub retry_reopen { my ($self, $cb) = @_; - my $ret; for my $i (1..10) { - eval { $ret = $cb->() }; - return $ret unless $@; + if (wantarray) { + my @ret; + eval { @ret = $cb->() }; + return @ret unless $@; + } else { + my $ret; + eval { $ret = $cb->() }; + return $ret unless $@; + } # Exception: The revision being read has been discarded - # you should call Xapian::Database::reopen() if (ref($@) eq 'Search::Xapian::DatabaseModifiedError') { @@ -210,7 +216,6 @@ sub _do_enquire { sub _enquire_once { my ($self, $query, $opts) = @_; my $enquire = enquire($self); - $query = Search::Xapian::Query->new(OP_AND,$query); $enquire->set_query($query); $opts ||= {}; my $desc = !$opts->{asc}; @@ -226,8 +231,9 @@ sub _enquire_once { my @msgs = map { PublicInbox::SearchMsg->load_doc($_->get_document); } $mset->items; + return \@msgs unless wantarray; - { total => $mset->get_matches_estimated, msgs => \@msgs } + ($mset->get_matches_estimated, \@msgs) } # read-write @@ -284,8 +290,8 @@ sub query_xover { } sub query_ts { - my ($self, $ts, $offset) = @_; - $self->{over_ro}->query_ts($ts, $offset); + my ($self, $ts, $prev) = @_; + $self->{over_ro}->query_ts($ts, $prev); } sub first_smsg_by_mid {