From 52f9edfb756676b471deac69e5d55df1933aa528 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 10 Feb 2017 01:51:05 +0000 Subject: search: remove unnecessary abstractions and functionality This simplifies the code a bit and reduces the translation overhead for looking directly at data from tools shipped with Xapian. While we're at it, fix thread-all.t :) --- lib/PublicInbox/Search.pm | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) (limited to 'lib/PublicInbox/Search.pm') diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index 8c72fa17..02d1827e 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -55,8 +55,6 @@ my %bool_pfx_internal = ( ); my %bool_pfx_external = ( - # do we still need these? probably not.. - path => 'XPATH', mid => 'Q', # uniQue id (Message-ID) ); @@ -106,11 +104,7 @@ chomp @HELP; # da (diff a/ removed lines) # db (diff b/ added lines) -my %all_pfx = (%bool_pfx_internal, %bool_pfx_external, %prob_prefix); - -sub xpfx { $all_pfx{$_[0]} } - -my $mail_query = Search::Xapian::Query->new(xpfx('type') . 'mail'); +my $mail_query = Search::Xapian::Query->new('T' . 'mail'); sub xdir { my (undef, $git_dir) = @_; @@ -145,11 +139,11 @@ sub get_thread { my $smsg = eval { $self->lookup_message($mid) }; return { total => 0, msgs => [] } unless $smsg; - my $qtid = Search::Xapian::Query->new(xpfx('thread').$smsg->thread_id); + my $qtid = Search::Xapian::Query->new('G' . $smsg->thread_id); my $path = $smsg->path; if (defined $path && $path ne '') { my $path = id_compress($smsg->path); - my $qsub = Search::Xapian::Query->new(xpfx('path').$path); + my $qsub = Search::Xapian::Query->new('XPATH' . $path); $qtid = Search::Xapian::Query->new(OP_OR, $qtid, $qsub); } $opts ||= {}; @@ -278,7 +272,7 @@ sub lookup_message { my ($self, $mid) = @_; $mid = mid_clean($mid); - my $doc_id = $self->find_unique_doc_id('mid', $mid); + my $doc_id = $self->find_unique_doc_id('Q' . $mid); my $smsg; if (defined $doc_id) { # raises on error: @@ -298,9 +292,9 @@ sub lookup_mail { # no ghosts! } sub find_unique_doc_id { - my ($self, $term, $value) = @_; + my ($self, $termval) = @_; - my ($begin, $end) = $self->find_doc_ids($term, $value); + my ($begin, $end) = $self->find_doc_ids($termval); return undef if $begin->equal($end); # not found @@ -308,23 +302,16 @@ sub find_unique_doc_id { # sanity check $begin->inc; - $begin->equal($end) or die "Term '$term:$value' is not unique\n"; + $begin->equal($end) or die "Term '$termval' is not unique\n"; $rv; } # returns begin and end PostingIterator sub find_doc_ids { - my ($self, $term, $value) = @_; - - $self->find_doc_ids_for_term(xpfx($term) . $value); -} - -# returns begin and end PostingIterator -sub find_doc_ids_for_term { - my ($self, $term) = @_; + my ($self, $termval) = @_; my $db = $self->{xdb}; - ($db->postlist_begin($term), $db->postlist_end($term)); + ($db->postlist_begin($termval), $db->postlist_end($termval)); } # normalize subjects so they are suitable as pathnames for URLs -- cgit v1.2.3-24-ge0c7