]> Sergey Matveev's repositories - public-inbox.git/commitdiff
search: revert to using 'Q' as a uniQue id per-Xapian conventions
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Fri, 2 Mar 2018 20:46:55 +0000 (20:46 +0000)
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Fri, 2 Mar 2018 20:46:55 +0000 (20:46 +0000)
'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
lib/PublicInbox/Search.pm
lib/PublicInbox/SearchIdx.pm
lib/PublicInbox/SearchIdxSkeleton.pm
lib/PublicInbox/SearchMsg.pm

index 90d68db8fd68ac7bbe8cafca3f7ded8c645c8781..f3076a3476daef7022f66408a8b9cc6f4b1a0352 100644 (file)
@@ -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;
index c074410c5bf24188d471c6fae100e2acf3df9c9b..74f406adfcf8da63654ec8394d8807b188f8156c 100644 (file)
@@ -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);
index 57aed75c31d154b79499eabb93b588f2829d6213..61dc0577f553e21a064d522a0d7b4b9c4a46c091 100644 (file)
@@ -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');
 
index aa2713f12743b58944badaa003e67b7215430c68..333f965d49b6c893e870b738d5d8f5012a8a60ad 100644 (file)
@@ -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;
index 941bfd24128ae417ed919d0db9d8c1a68d3e8d97..014f4909d90e9415da3bbde17829e5c8dffea42d 100644 (file)
@@ -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;
        }
 }