diff options
author | Eric Wong <e@80x24.org> | 2016-08-18 04:44:07 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-08-18 09:31:55 +0000 |
commit | adecbd43d2eed046fe6e88a459d03567461fd84b (patch) | |
tree | 7900b8ee9e908daa6fa8ddbef3c7ad846ecd8c8b /lib/PublicInbox/Search.pm | |
parent | dfe55f5ee5bd6e3a12d933a6570eb94f294d1c54 (diff) | |
download | public-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.pm | 38 |
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; |