]> Sergey Matveev's repositories - public-inbox.git/commitdiff
searchidx: use add_boolean_term for internal terms
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Sat, 3 Mar 2018 17:26:16 +0000 (17:26 +0000)
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Sat, 3 Mar 2018 17:26:16 +0000 (17:26 +0000)
Aside from the Message-Id ('Q'), these terms do not appear in
content and thus have no business contributing to the Xapian
document length.

Thanks-to Olly Betts for the tip on xapian-discuss
<20180228004400.GU12724@survex.com>

lib/PublicInbox/SearchIdx.pm
lib/PublicInbox/SearchIdxSkeleton.pm
lib/PublicInbox/SearchMsg.pm

index 1bca3a641bec36146a3e04728f65b6648e0b0ec5..f63e07200b08d9d970d5e43c10cc8f70da0508af 100644 (file)
@@ -322,7 +322,7 @@ sub add_message {
                if ($subj ne '') {
                        $xpath = $self->subject_path($subj);
                        $xpath = id_compress($xpath);
-                       $doc->add_term('XPATH' . $xpath);
+                       $doc->add_boolean_term('XPATH' . $xpath);
                }
 
                my $lines = $mime->body_raw =~ tr!\n!\n!;
@@ -385,10 +385,11 @@ sub add_message {
                $doc->set_data($data);
                if (my $altid = $self->{-altid}) {
                        foreach my $alt (@$altid) {
+                               my $pfx = $alt->{xprefix};
                                foreach my $mid (@$mids) {
                                        my $id = $alt->mid2alt($mid);
                                        next unless defined $id;
-                                       $doc->add_term($alt->{xprefix} . $id);
+                                       $doc->add_boolean_term($pfx . $id);
                                }
                        }
                }
@@ -498,7 +499,7 @@ sub link_doc {
        } else {
                $tid = defined $old_tid ? $old_tid : $self->next_thread_id;
        }
-       $doc->add_term('G' . $tid);
+       $doc->add_boolean_term('G' . $tid);
        $tid;
 }
 
@@ -779,9 +780,9 @@ sub create_ghost {
 
        my $tid = $self->next_thread_id;
        my $doc = Search::Xapian::Document->new;
-       $doc->add_term('Q' . $mid);
-       $doc->add_term('G' . $tid);
-       $doc->add_term('T' . 'ghost');
+       $doc->add_boolean_term('Q' . $mid);
+       $doc->add_boolean_term('G' . $tid);
+       $doc->add_boolean_term('T' . 'ghost');
 
        my $smsg = PublicInbox::SearchMsg->wrap($doc, $mid);
        $self->{xdb}->add_document($doc);
@@ -805,7 +806,7 @@ sub merge_threads {
                foreach my $docid (@ids) {
                        my $doc = $db->get_document($docid);
                        $doc->remove_term('G' . $loser_tid);
-                       $doc->add_term('G' . $winner_tid);
+                       $doc->add_boolean_term('G' . $winner_tid);
                        $db->replace_document($docid, $doc);
                }
        }
index 506e566f8dba1ea1c9410d566cf80e257a601e5b..3fe6a4ad105c6a705ad6f36e1a877c0b1a6346f4 100644 (file)
@@ -98,7 +98,7 @@ sub index_skeleton_real ($$) {
        my $ts = $values->[PublicInbox::Search::TS];
        my $smsg = PublicInbox::SearchMsg->new(undef);
        my $doc = $smsg->{doc};
-       $doc->add_term('XPATH' . $xpath) if defined $xpath;
+       $doc->add_boolean_term('XPATH' . $xpath) if defined $xpath;
        foreach my $mid (@$mids) {
                $doc->add_term('Q' . $mid);
        }
index a55653457ed6e387cd83bd095df9db24af9bcd4e..93e6fd8b8f465d45a0e8c0a67257b283dd494feb 100644 (file)
@@ -14,7 +14,7 @@ use PublicInbox::Address;
 sub new {
        my ($class, $mime) = @_;
        my $doc = Search::Xapian::Document->new;
-       $doc->add_term('T' . 'mail');
+       $doc->add_boolean_term('T' . 'mail');
 
        bless { type => 'mail', doc => $doc, mime => $mime }, $class;
 }