diff options
author | Eric Wong (Contractor, The Linux Foundation) <e@80x24.org> | 2018-03-03 17:42:20 +0000 |
---|---|---|
committer | Eric Wong (Contractor, The Linux Foundation) <e@80x24.org> | 2018-03-03 17:42:20 +0000 |
commit | 95bd8265dfb67ba90e7068bf5a4360168a1f30b6 (patch) | |
tree | 3862ca220b4db34f2bbef9de96a5d8bb4cccf09c /lib | |
parent | 43fd7e7bda1b8eeb32cf43f6fd89568a938aedf5 (diff) | |
download | public-inbox-95bd8265dfb67ba90e7068bf5a4360168a1f30b6.tar.gz |
Since we support duplicate MIDs in v2, the NNTP article number becomes the true unique identifier and we want a way to do fast lookups on it. While we're at it, stop putting XPATH in the term partitions since we only need it in the skeleton DB.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/PublicInbox/SearchIdx.pm | 8 | ||||
-rw-r--r-- | lib/PublicInbox/SearchIdxSkeleton.pm | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm index f63e0720..3ef444d6 100644 --- a/lib/PublicInbox/SearchIdx.pm +++ b/lib/PublicInbox/SearchIdx.pm @@ -322,7 +322,6 @@ sub add_message { if ($subj ne '') { $xpath = $self->subject_path($subj); $xpath = id_compress($xpath); - $doc->add_boolean_term('XPATH' . $xpath); } my $lines = $mime->body_raw =~ tr!\n!\n!; @@ -398,7 +397,8 @@ sub add_message { $skel->index_skeleton(\@values); $doc_id = $self->{xdb}->add_document($doc); } else { - $doc_id = link_and_save($self, $doc, $mids, $refs); + $doc_id = link_and_save($self, $doc, $mids, $refs, + $num, $xpath); } }; @@ -504,10 +504,12 @@ sub link_doc { } sub link_and_save { - my ($self, $doc, $mids, $refs) = @_; + my ($self, $doc, $mids, $refs, $num, $xpath) = @_; my $db = $self->{xdb}; my $old_tid; my $doc_id; + $doc->add_boolean_term('XNUM' . $num) if defined $num; + $doc->add_boolean_term('XPATH' . $xpath) if defined $xpath; my $vivified = 0; foreach my $mid (@$mids) { $self->each_smsg_by_mid($mid, sub { diff --git a/lib/PublicInbox/SearchIdxSkeleton.pm b/lib/PublicInbox/SearchIdxSkeleton.pm index 3fe6a4ad..4066b591 100644 --- a/lib/PublicInbox/SearchIdxSkeleton.pm +++ b/lib/PublicInbox/SearchIdxSkeleton.pm @@ -98,7 +98,6 @@ sub index_skeleton_real ($$) { my $ts = $values->[PublicInbox::Search::TS]; my $smsg = PublicInbox::SearchMsg->new(undef); my $doc = $smsg->{doc}; - $doc->add_boolean_term('XPATH' . $xpath) if defined $xpath; foreach my $mid (@$mids) { $doc->add_term('Q' . $mid); } @@ -106,8 +105,9 @@ sub index_skeleton_real ($$) { $doc->set_data($doc_data); $smsg->{ts} = $ts; $smsg->load_from_data($doc_data); + my $num = $values->[PublicInbox::Search::NUM]; my @refs = ($smsg->references =~ /<([^>]+)>/g); - $self->link_and_save($doc, $mids, \@refs); + $self->link_and_save($doc, $mids, \@refs, $num, $xpath); } 1; |