PUBLIC-INBOX-INDEX(1)
π PUBLIC-INBOX-INDEX π
okay bestie, welcome to public-inbox-index(1) β the little command from the public-inbox user manual that builds and feeds the search brains of your inbox. it's giving librarian energy but make it fast. let's go π§
β¨ NAME β¨
public-inbox-index β create and update search indices
πΈ SYNOPSIS πΈ
public-inbox-index [OPTIONS] INBOX_DIR...
public-inbox-index [OPTIONS] --all
π¦ DESCRIPTION π¦
so like, public-inbox-index creates and updates the search, overview and NNTP article number database that the read-only public-inbox HTTP and NNTP interfaces use. π
rn, this needs the DBD::SQLite and DBI Perl modules. Search::Xapian is optional β it's only there to support the PSGI search interface.
once the initial indices are created by public-inbox-index, besties public-inbox-mda(1) and public-inbox-watch(1) will automatically maintain them for you. no cap. π«Ά
running this by hand to update indices is only required if you're relying on git-fetch(1) to mirror an existing public-inbox, or if you're upgrading to a new version of public-inbox using the --reindex option.
having the overview and article number database is essential to running the NNTP interface, and strongly recommended for the HTTP interface, because it provides thread grouping on top of normal search functionality. iconic behavior tbh π
π OPTIONS π
-j JOBS,--jobs=JOBSβ this influences the number of Xapian indexing shards in a (public-inbox-v2-format(5)) inbox.
see --jobs in public-inbox-init(1) for a full description of sharding.
--jobs=0 is accepted as of public-inbox 1.6.0 to disable parallel indexing regardless of the number of pre-existing shards.
if the inbox has not been indexed or initialized, JOBS - 1 shards will be created (one job is always needed for indexing the overview and article number mapping).
Default: the number of existing Xapian shards
-c,--compactβ compacts the Xapian DBs after indexing. this is recommended when using--reindexso you don't run out of disk space while indexing multiple inboxes.
while this option takes a negligible amount of time compared to --reindex, it requires temporarily duplicating the entire contents of the Xapian DB. π
this switch may be specified twice, in which case compaction happens both before and after indexing to minimize the temporal footprint of the (re)indexing operation.
Available since public-inbox 1.4.0.
--reindexβ forces a re-index of all messages in the inbox. this can be used for in-place upgrades and bugfixes while NNTP/HTTP server processes are utilizing the index. keep in mind this roughly doubles the size of the already-large Xapian database. π using this with--compactor runningpublic-inbox-compact(1)afterwards is recommended to release free space.
public-inbox protects writes to various indices with flock(2), so it is safe to reindex (and rethread) while public-inbox-watch(1), public-inbox-mda(1) or public-inbox-learn(1) run.
this does not touch the NNTP article number database. it does not affect threading unless --rethread is used.
--allβ index all inboxes configured in~/.public-inbox/config. this is an alternative to specifying individual inboxes directories on the command-line.--rethreadβ regenerate internal THREADID and message thread associations when reindexing.
this fixes some bugs in older versions of public-inbox. while it is possible to use this without --reindex, it makes little sense to do so.
Available in public-inbox 1.6.0+.
--pruneβ rungit-gc(1)to prune and expire reflogs if discontiguous history is detected. this is intended to be used in mirrors after runningpublic-inbox-edit(1)orpublic-inbox-purge(1)to ensure data is expunged from mirrors.
Available since public-inbox 1.2.0.
--max-size SIZEβ sets or overridespublicinbox.indexMaxSizeon a per-invocation basis. seepublicinbox.indexMaxSizebelow.
Available since public-inbox 1.5.0.
--batch-size SIZEβ sets or overridespublicinbox.indexBatchSizeon a per-invocation basis. seepublicinbox.indexBatchSizebelow.
when using rotational storage but abundant RAM, using a large value (e.g. 500m) with --sequential-shard can significantly speed up and reduce fragmentation during the initial index and full --reindex invocations (but not incremental updates).
Available in public-inbox 1.6.0+.
--no-fsyncβ disablesfsync(2)andfdatasync(2)operations on SQLite and Xapian. this is only effective with Xapian 1.4+. this is primarily intended for systems with low RAM and the small (default)--batch-size=1m. users of large--batch-sizemay even find disablingfdatasync(2)causes too much dirty data to accumulate, resulting on latency spikes from writeback. π
Available in public-inbox 1.6.0+.
--dangerousβ speed up initial index by using in-place updates and denying support for concurrent readers. this is only effective with Xapian 1.4+.
okay so it's literally named dangerous bestie, proceed with caution π
Available in public-inbox 1.8.0+
--sequential-shardβ sets or overridespublicinbox.indexSequentialShardon a per-invocation basis. seepublicinbox.indexSequentialShardbelow.
Available in public-inbox 1.6.0+.
--skip-docdataβ stop storing document data in Xapian on an existing inbox.
see --skip-docdata in public-inbox-init(1) for description and caveats.
Available in public-inbox 1.6.0+.
-E EXTINDEX,--update-extindex=EXTINDEXβ update the given external index (public-inbox-extindex-format(5)). either the configured section name (e.g.all) or a directory name may be specified.
defaults to all if [extindex "all"] is configured, otherwise no external indices are updated.
may be specified multiple times in rare cases where multiple external indices are configured.
--no-update-extindexβ do not update theallexternal index by default. this negates all uses of-E/--update-extindex=on the command-line.--since=DATESTRING,--after=DATESTRING,--until=DATESTRING,--before=DATESTRINGβ passed directly togit-log(1)to limit changes for--reindex
π FILES π
for v1 (ssoma) repositories described in public-inbox-v1-format(5). all public-inbox-specific files are contained within the $GIT_DIR/public-inbox/ directory.
v2 inboxes are described in public-inbox-v2-format(5).
π CONFIGURATION π
publicinbox.indexMaxSize
- prevents indexing of messages larger than the specified size value. a single suffix modifier of
k,morgis supported, thus the value of1mprevents indexing of messages larger than one megabyte. - this is useful for avoiding memory exhaustion in mirrors via git. it does not prevent
public-inbox-mda(1)orpublic-inbox-watch(1)from importing (and indexing) a message. - this option is only available in public-inbox 1.5 or later.
- Default: none
publicinbox.indexBatchSize
- flushes changes to the filesystem and releases locks after indexing the given number of bytes. the default value of
1m(one megabyte) is low to minimize memory use and reduce contention with parallel invocations ofpublic-inbox-mda(1),public-inbox-learn(1), andpublic-inbox-watch(1). - increase this value on powerful systems to improve throughput at the expense of memory use. the reduction of lock granularity may not be noticeable on fast systems. with SSDs, values above
4mhave little benefit. - for
public-inbox-v2-format(5)inboxes, this value is multiplied by the number of Xapian shards. thus a typical v2 inbox with 3 shards will flush every 3 megabytes by default unless parallelism is disabled via--sequential-shardor--jobs=0. - this influences memory usage of Xapian, but it is not exact. the actual memory used by Xapian and Perl has been observed in excess of 10x this value. π
- this option is available in public-inbox 1.6 or later. public-inbox 1.5 and earlier used the current default,
1m. - Default:
1m(one megabyte)
publicinbox.indexSequentialShard
- for
public-inbox-v2-format(5)inboxes, setting this totrueallows indexing Xapian shards in multiple passes. this speeds up indexing on rotational storage with high seek latency by allowing individual shards to fit into the kernel page cache. - using a higher-than-normal number of
--jobswithpublic-inbox-init(1)may be required to ensure individual shards are small enough to fit into cache. - > Warning: interrupting
public-inbox-index(1)while this option is in use may leave the search indices out-of-date with respect to SQLite databases. WWW and IMAP users may notice incomplete search results, but it is otherwise non-fatal. using--reindexwill bring everything back up-to-date. π«Ά - Available in public-inbox 1.6.0+.
- this is ignored on
public-inbox-v1-format(5)inboxes. - Default:
false, shards are indexed in parallel
publicinbox.<name>.indexSequentialShard
- identical to
publicinbox.indexSequentialShard, but only affects the inbox matching <name>.
β ENVIRONMENT β
PI_CONFIGβ used to override the default~/.public-inbox/configvalue.XAPIAN_FLUSH_THRESHOLDβ the number of documents to update before committing changes to disk. this environment is handled directly by Xapian, refer to Xapian API documentation for more details.
for public-inbox 1.6 and later, use publicinbox.indexBatchSize instead.
setting XAPIAN_FLUSH_THRESHOLD or publicinbox.indexBatchSize for a large --reindex may cause public-inbox-mda(1), public-inbox-learn(1) and public-inbox-watch(1) tasks to wait long and unpredictable periods of time during --reindex. π
Default: none, uses publicinbox.indexBatchSize
π¦ UPGRADING π¦
occasionally, public-inbox will update it's schema version and require a full index by running this command. bestie you just gotta do it, no shortcuts π
π CONTACT π
feedback welcome via plain-text mail to <mailto:meta@public-inbox.org>
the mail archives are hosted at <https://public-inbox.org/meta/> and <http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/>
π COPYRIGHT π
copyright all contributors <mailto:meta@public-inbox.org>
license: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
πΈ SEE ALSO πΈ
Search::Xapian, DBD::SQLite, public-inbox-extindex-format(5)
and that's the whole page, bestie!! π this came from public-inbox.git, dated 1993-10-02 β mwah, go index something iconic. slay πβ¨
π¦ where this page comes from
- fedora 43: public-inbox 2.0.0~20230714git590023f-6.fc43 Β· AGPL-3.0-or-later
- fedora 44: public-inbox 2.0.0~20230714git590023f-6.fc43 Β· AGPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms