]> Sergey Matveev's repositories - public-inbox.git/commit
isearch: emulate per-inbox search with ->ALL
authorEric Wong <e@80x24.org>
Sat, 5 Dec 2020 10:11:38 +0000 (10:11 +0000)
committerEric Wong <e@80x24.org>
Sat, 5 Dec 2020 21:41:52 +0000 (21:41 +0000)
commit525555d14118f92f86be54c683f797089c52a78d
tree59baf4193882b020ffe67da2e6e96156e86e8b41
parent89990b0cfc8bbdabc8d650325d9e1bc585df8a0c
isearch: emulate per-inbox search with ->ALL

Using "eidx_key:" boolean prefix to limit results to a given
inbox, we can use ->ALL to emulate and replace per-Inbox
xap15/[0-9] search indices.

With this change, the presence of "extindex.all.topdir" in the
$PI_CONFIG will cause the WWW code to use that extindex and
ignore per-inbox Xapian DBs in xap15/[0-9].

Unfortunately IMAP search still requires old per-inbox indices,
for now.  Mapping extindex Xapian docids to per-Inbox UIDs and
vice-versa is proving tricky.  Fortunately, IMAP search is
rarely used and optional.  The RFCs don't specify expensive
phrase search, either, so `indexlevel=medium' can be used in
per-inbox Xapian indices to save space.

For primarily WWW (and future JMAP) users; this should result in
significant disk space, FD, and page cache footprint savings for
large instances with many inboxes and many cross-posted
messages.
15 files changed:
MANIFEST
lib/PublicInbox/Config.pm
lib/PublicInbox/DummyInbox.pm
lib/PublicInbox/ExtMsg.pm
lib/PublicInbox/ExtSearch.pm
lib/PublicInbox/Inbox.pm
lib/PublicInbox/Isearch.pm [new file with mode: 0644]
lib/PublicInbox/Mbox.pm
lib/PublicInbox/Search.pm
lib/PublicInbox/SearchView.pm
lib/PublicInbox/SolverGit.pm
lib/PublicInbox/WWW.pm
lib/PublicInbox/WwwStream.pm
lib/PublicInbox/WwwText.pm
t/extsearch.t