]> Sergey Matveev's repositories - public-inbox.git/commitdiff
search: use boolean prefixes for git blob queries
authorEric Wong <e@80x24.org>
Fri, 20 Jul 2018 06:16:12 +0000 (06:16 +0000)
committerEric Wong <e@80x24.org>
Fri, 20 Jul 2018 07:02:45 +0000 (07:02 +0000)
I've hit some case where probabilistic searches don't work when
using dfpre:/dfpost:/dfblob: search prefixes because stemming in
the query parser interferes.

In any case, our indexing code indexes longer/unabbreviated blob
names down to its 7 character abbreviation, so there should be
no need to do wildcard searches on git blob names.

lib/PublicInbox/Search.pm

index 69eca9fed05a6ea94b0b1ac80d97c0b4d9d78c4b..090d998b6c2c3d6fda2365d9ae92ada6f0dd40e6 100644 (file)
@@ -50,6 +50,9 @@ use constant {
 
 my %bool_pfx_external = (
        mid => 'Q', # Message-ID (full/exact), this is mostly uniQue
+       dfpre => 'XDFPRE',
+       dfpost => 'XDFPOST',
+       dfblob => 'XDFPRE XDFPOST',
 );
 
 my $non_quoted_body = 'XNQ XDFN XDFA XDFB XDFHH XDFCTX XDFPRE XDFPOST';
@@ -74,9 +77,6 @@ my %prob_prefix = (
        dfb => 'XDFB',
        dfhh => 'XDFHH',
        dfctx => 'XDFCTX',
-       dfpre => 'XDFPRE',
-       dfpost => 'XDFPOST',
-       dfblob => 'XDFPRE XDFPOST',
 
        # default:
        '' => 'XM S A XQUOT XFN ' . $non_quoted_body,
@@ -266,7 +266,7 @@ sub qp {
                Search::Xapian::NumberValueRangeProcessor->new(DT, 'dt:'));
 
        while (my ($name, $prefix) = each %bool_pfx_external) {
-               $qp->add_boolean_prefix($name, $prefix);
+               $qp->add_boolean_prefix($name, $_) foreach split(/ /, $prefix);
        }
 
        # we do not actually create AltId objects,