From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 2D0C21FAEF for ; Tue, 6 Mar 2018 08:42:43 +0000 (UTC) From: "Eric Wong (Contractor, The Linux Foundation)" To: meta@public-inbox.org Subject: [PATCH 13/34] search: revert to using 'Q' as a uniQue id per-Xapian conventions Date: Tue, 6 Mar 2018 08:42:21 +0000 Message-Id: <20180306084242.19988-14-e@80x24.org> In-Reply-To: <20180306084242.19988-1-e@80x24.org> References: <20180306084242.19988-1-e@80x24.org> List-Id: 'Q' is merely a convention in the Xapian world, and is close enough to unique for practical purposes, so stop using XMID and gain a little more term length as a result. --- lib/PublicInbox/ExtMsg.pm | 2 +- lib/PublicInbox/Search.pm | 8 ++++---- lib/PublicInbox/SearchIdx.pm | 8 ++++---- lib/PublicInbox/SearchIdxSkeleton.pm | 2 +- lib/PublicInbox/SearchMsg.pm | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/PublicInbox/ExtMsg.pm b/lib/PublicInbox/ExtMsg.pm index 90d68db..f3076a3 100644 --- a/lib/PublicInbox/ExtMsg.pm +++ b/lib/PublicInbox/ExtMsg.pm @@ -46,7 +46,7 @@ sub ext_msg { } # try to find the URL with Xapian to avoid forking - my $doc_id = eval { $s->find_first_doc_id('XMID' . $mid) }; + my $doc_id = eval { $s->find_first_doc_id('Q' . $mid) }; if ($@) { # xapian not configured properly for this repo push @nox, $other; diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index c074410..74f406a 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -56,7 +56,7 @@ my %bool_pfx_internal = ( ); my %bool_pfx_external = ( - mid => 'XMID', # Message-ID (full/exact) + mid => 'Q', # Message-ID (full/exact), this is mostly uniQue ); my %prob_prefix = ( @@ -333,7 +333,7 @@ sub lookup_skeleton { my ($self, $mid) = @_; my $skel = $self->{skel} or return lookup_message($self, $mid); $mid = mid_clean($mid); - my $term = 'XMID' . $mid; + my $term = 'Q' . $mid; my $smsg; my $beg = $skel->postlist_begin($term); if ($beg != $skel->postlist_end($term)) { @@ -352,7 +352,7 @@ sub lookup_message { my ($self, $mid) = @_; $mid = mid_clean($mid); - my $doc_id = $self->find_first_doc_id('XMID' . $mid); + my $doc_id = $self->find_first_doc_id('Q' . $mid); my $smsg; if (defined $doc_id) { # raises on error: @@ -377,7 +377,7 @@ sub each_smsg_by_mid { my $xdb = $self->{xdb}; # XXX retry_reopen isn't necessary for V2Writable, but the PSGI # interface will need it... - my ($head, $tail) = $self->find_doc_ids('XMID' . $mid); + my ($head, $tail) = $self->find_doc_ids('Q' . $mid); for (; $head->nequal($tail); $head->inc) { my $doc_id = $head->get_docid; my $doc = $xdb->get_document($doc_id); diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm index 57aed75..61dc057 100644 --- a/lib/PublicInbox/SearchIdx.pm +++ b/lib/PublicInbox/SearchIdx.pm @@ -19,7 +19,7 @@ use POSIX qw(strftime); require PublicInbox::Git; use constant { - MAX_MID_SIZE => 244, # max term size - 1 in Xapian + MAX_MID_SIZE => 244, # max term size (Xapian limitation) - length('Q') PERM_UMASK => 0, OLD_PERM_GROUP => 1, OLD_PERM_EVERYBODY => 2, @@ -302,7 +302,7 @@ sub add_message { } $smsg = PublicInbox::SearchMsg->new($mime); my $doc = $smsg->{doc}; - $doc->add_term('XMID' . $mid); + $doc->add_term('Q' . $mid); my $subj = $smsg->subject; my $xpath; @@ -404,7 +404,7 @@ sub remove_message { $mid = mid_clean($mid); eval { - my ($head, $tail) = $self->find_doc_ids('XMID' . $mid); + my ($head, $tail) = $self->find_doc_ids('Q' . $mid); if ($head->equal($tail)) { warn "cannot remove non-existent <$mid>\n"; } @@ -721,7 +721,7 @@ sub create_ghost { my $tid = $self->next_thread_id; my $doc = Search::Xapian::Document->new; - $doc->add_term('XMID' . $mid); + $doc->add_term('Q' . $mid); $doc->add_term('G' . $tid); $doc->add_term('T' . 'ghost'); diff --git a/lib/PublicInbox/SearchIdxSkeleton.pm b/lib/PublicInbox/SearchIdxSkeleton.pm index aa2713f..333f965 100644 --- a/lib/PublicInbox/SearchIdxSkeleton.pm +++ b/lib/PublicInbox/SearchIdxSkeleton.pm @@ -107,7 +107,7 @@ sub index_skeleton_real ($$) { } my $doc = $smsg->{doc}; $doc->add_term('XPATH' . $xpath) if defined $xpath; - $doc->add_term('XMID' . $mid); + $doc->add_term('Q' . $mid); PublicInbox::SearchIdx::add_values($doc, $values); $doc->set_data($doc_data); $smsg->{ts} = $ts; diff --git a/lib/PublicInbox/SearchMsg.pm b/lib/PublicInbox/SearchMsg.pm index 941bfd2..014f490 100644 --- a/lib/PublicInbox/SearchMsg.pm +++ b/lib/PublicInbox/SearchMsg.pm @@ -154,7 +154,7 @@ sub mid ($;$) { } elsif (my $rv = $self->{mid}) { $rv; } else { - $self->{mid} = _get_term_val($self, 'XMID', qr/\AXMID/) || + $self->{mid} = _get_term_val($self, 'Q', qr/\AQ/) || $self->_extract_mid; } } -- EW