about summary refs log tree commit homepage
path: root/lib/PublicInbox/Search.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-08-18 04:44:07 +0000
committerEric Wong <e@80x24.org>2016-08-18 09:31:55 +0000
commitadecbd43d2eed046fe6e88a459d03567461fd84b (patch)
tree7900b8ee9e908daa6fa8ddbef3c7ad846ecd8c8b /lib/PublicInbox/Search.pm
parentdfe55f5ee5bd6e3a12d933a6570eb94f294d1c54 (diff)
downloadpublic-inbox-adecbd43d2eed046fe6e88a459d03567461fd84b.tar.gz
Begin documenting some basic help functionality.
I may tweak the anchor names of the various HTML endpoints
to be more consistent with each other (old ones will be
supported for a short while), so I'm not documenting
those, for now.

This may become part of a builtin key-value store for
basic texts, but this probably shouldn't become a wiki
engine, either.
Diffstat (limited to 'lib/PublicInbox/Search.pm')
-rw-r--r--lib/PublicInbox/Search.pm38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm
index 7561ef44..445c2d8a 100644
--- a/lib/PublicInbox/Search.pm
+++ b/lib/PublicInbox/Search.pm
@@ -51,6 +51,7 @@ my %bool_pfx_internal = (
         thread => 'G', # newsGroup (or similar entity - e.g. a web forum name)
 );
 
+# do we still need these? probably not..
 my %bool_pfx_external = (
         path => 'XPATH',
         mid => 'Q', # uniQue id (Message-ID)
@@ -62,6 +63,29 @@ my %prob_prefix = (
         m => 'Q', # 'mid' is exact, 'm' can do partial
 );
 
+# not documenting m: and mid: for now, the using the URLs works w/o Xapian
+our @HELP = (
+        's:' => <<EOF,
+match within Subject only  e.g. s:"a quick brown fox"
+This is a probabilistic search with support for stemming
+and wildcards '*'
+EOF
+        'd:' => <<EOF,
+date range as YYYYMMDD  e.g. d:19931002..20101002
+Open-ended ranges such as d:19931002.. and d:..20101002
+are also supported.
+EOF
+);
+# TODO: (from mairix, some of these are maybe)
+# b (body), f (From:), c (Cc:), n (attachment), t (To:)
+# tc (To:+Cc:), bs (body + Subject), tcf (To: +Cc: +From:)
+#
+# Non-mairix:
+# df (filenames from diff)
+# nq (non-quoted body)
+# da (diff a/ removed lines)
+# db (diff b/ added lines)
+
 my %all_pfx = (%bool_pfx_internal, %bool_pfx_external, %prob_prefix);
 
 sub xpfx { $all_pfx{$_[0]} }
@@ -190,10 +214,14 @@ sub qp {
         # we do not actually create AltId objects,
         # just parse the spec to avoid the extra DB handles for now.
         if (my $altid = $self->{altid}) {
+                my $user_pfx = $self->{-user_pfx} ||= [];
                 for (@$altid) {
                         # $_ = 'serial:gmane:/path/to/gmane.msgmap.sqlite3'
                         /\Aserial:(\w+):/ or next;
                         my $pfx = $1;
+                        push @$user_pfx, "$pfx:", <<EOF;
+alternate serial number  e.g. $pfx:12345
+EOF
                         # gmane => XGMANE
                         $qp->add_boolean_prefix($pfx, 'X'.uc($pfx));
                 }
@@ -321,4 +349,14 @@ sub enquire {
         $self->{enquire} ||= Search::Xapian::Enquire->new($self->{xdb});
 }
 
+sub help {
+        my ($self) = @_;
+        $self->qp; # parse altids
+        my @ret = @HELP;
+        if (my $user_pfx = $self->{-user_pfx}) {
+                push @ret, @$user_pfx;
+        }
+        \@ret;
+}
+
 1;