}
warn "v2 repo with $parts found in $dir\n";
$self->{xdb} = $xdb;
- $self->{skel} = Search::Xapian::Database->new("$dir/all");
+ $self->{skel} = Search::Xapian::Database->new("$dir/skel");
} else {
$self->{xdb} = Search::Xapian::Database->new($self->xdir);
}
# always sort threads by timestamp, this makes life easier
# for the threading algorithm (in SearchThread.pm)
$opts->{asc} = 1;
-
+ $opts->{enquire} = enquire_skel($self);
_do_enquire($self, $qtid, $opts);
}
sub _enquire_once {
my ($self, $query, $opts) = @_;
- my $enquire = $self->enquire;
+ my $enquire = $opts->{enquire} || enquire($self);
if (defined $query) {
$query = Search::Xapian::Query->new(OP_AND,$query,$mail_query);
} else {
sub query_xover {
my ($self, $beg, $end, $offset) = @_;
my $qp = Search::Xapian::QueryParser->new;
- $qp->set_database($self->{xdb});
+ $qp->set_database($self->{skel} || $self->{xdb});
$qp->add_valuerangeprocessor($self->num_range_processor);
my $query = $qp->parse_query("$beg..$end", QP_FLAGS);
- _do_enquire($self, $query, {num => 1, limit => 200, offset => $offset});
+ my $opts = {
+ enquire => enquire_skel($self),
+ num => 1,
+ limit => 200,
+ offset => $offset,
+ };
+ _do_enquire($self, $query, $opts);
}
sub lookup_skeleton {
$self->{enquire} ||= Search::Xapian::Enquire->new($self->{xdb});
}
+sub enquire_skel {
+ my ($self) = @_;
+ if (my $skel = $self->{skel}) {
+ $self->{enquire_skel} ||= Search::Xapian::Enquire->new($skel);
+ } else {
+ enquire($self);
+ }
+}
+
sub help {
my ($self) = @_;
$self->qp; # parse altids