diff options
author | Eric Wong <e@80x24.org> | 2023-11-28 14:56:19 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2023-11-29 02:13:20 +0000 |
commit | 87b7f633f2414a76c55f84da73cd7dd43f964533 (patch) | |
tree | a1ef018d3bcbd522171abb28971c41a250a917f3 /lib/PublicInbox/Search.pm | |
parent | a6abd43b2df02f258d5fc3493ce185f76dd98cd9 (diff) | |
download | public-inbox-87b7f633f2414a76c55f84da73cd7dd43f964533.tar.gz |
The C++ version will allow us to take full advantage of Xapian's APIs for better queries, and the Perl bindings version can still be advantageous in the future since we'll be able to support timeouts effectively.
Diffstat (limited to 'lib/PublicInbox/Search.pm')
-rw-r--r-- | lib/PublicInbox/Search.pm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm index 477f77dc..6145b027 100644 --- a/lib/PublicInbox/Search.pm +++ b/lib/PublicInbox/Search.pm @@ -76,6 +76,25 @@ our @MAIL_VMAP = ( ); our @MAIL_NRP; +# Getopt::Long spec, only short options for portability in C++ implementation +our @XH_SPEC = ( + 'a', # ascending sort + 'c', # code search + 'd=s@', # shard dirs + 'g=s', # git dir (with -c) + 'k=i', # sort column (like sort(1)) + 'm=i', # maximum number of results + 'o=i', # offset + 'p', # show percent + 'r', # 1=relevance then column + 't', # collapse threads + 'A=s@', # prefixes + 'D', # emit docdata + 'K=i', # timeout kill after i seconds + 'O=s', # eidx_key + 'T=i', # threadid +); + sub load_xapian () { return 1 if defined $Xap; # n.b. PI_XAPIAN is intended for development use only @@ -247,6 +266,12 @@ sub mdocid { int(($docid - 1) / $nshard) + 1; } +sub docids_to_artnums { + my $nshard = shift->{nshard}; + # XXX does array vs arrayref make a difference in modern Perls? + map { int(($_ - 1) / $nshard) + 1 } @_; +} + sub mset_to_artnums { my ($self, $mset) = @_; my $nshard = $self->{nshard}; |