mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-08-17 08:13:19 +00:00
Enhancement: document_index reindex --if-needed; simplify Docker startup
Add --if-needed flag to `document_index reindex`: checks _needs_rebuild() (schema version + language sentinels) and skips if index is up to date. Safe to run on every upgrade or startup. Simplify Docker init-search-index script to unconditionally call `reindex --if-needed` — schema/language change detection is now fully delegated to Python. Removes the bash index_version and language file tracking entirely; Tantivy's own sentinels are the source of truth. Update docs: bare metal upgrade step uses --if-needed; Docker note updated to describe the new always-runs-but-skips-if-current behaviour. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
ae494d4b6a
commit
da3ff7865e
@@ -3,39 +3,10 @@
|
||||
|
||||
declare -r log_prefix="[init-index]"
|
||||
|
||||
# Version 1: Tantivy backend (replaces Whoosh; resets versioning from scratch)
|
||||
declare -r index_version=1
|
||||
declare -r data_dir="${PAPERLESS_DATA_DIR:-/usr/src/paperless/data}"
|
||||
declare -r index_version_file="${data_dir}/.index_version"
|
||||
declare -r index_language_file="${data_dir}/.index_language"
|
||||
# Track the raw env var (not the resolved language) so inference changes
|
||||
# don't cause spurious reindexes — only explicit setting changes trigger one.
|
||||
declare -r search_language="${PAPERLESS_SEARCH_LANGUAGE:-}"
|
||||
|
||||
update_index () {
|
||||
echo "${log_prefix} Search index out of date. Updating..."
|
||||
cd "${PAPERLESS_SRC_DIR}"
|
||||
if [[ -n "${USER_IS_NON_ROOT}" ]]; then
|
||||
python3 manage.py document_index reindex --no-progress-bar
|
||||
echo ${index_version} | tee "${index_version_file}" > /dev/null
|
||||
echo "${search_language}" | tee "${index_language_file}" > /dev/null
|
||||
else
|
||||
s6-setuidgid paperless python3 manage.py document_index reindex --no-progress-bar
|
||||
echo ${index_version} | s6-setuidgid paperless tee "${index_version_file}" > /dev/null
|
||||
echo "${search_language}" | s6-setuidgid paperless tee "${index_language_file}" > /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ ! -f "${index_version_file}" ]]; then
|
||||
echo "${log_prefix} No index version file found"
|
||||
update_index
|
||||
elif [[ $(<"${index_version_file}") != "${index_version}" ]]; then
|
||||
echo "${log_prefix} Index version updated"
|
||||
update_index
|
||||
elif [[ ! -f "${index_language_file}" ]]; then
|
||||
echo "${log_prefix} No language file found"
|
||||
update_index
|
||||
elif [[ $(<"${index_language_file}") != "${search_language}" ]]; then
|
||||
echo "${log_prefix} Search language changed"
|
||||
update_index
|
||||
echo "${log_prefix} Checking search index..."
|
||||
cd "${PAPERLESS_SRC_DIR}"
|
||||
if [[ -n "${USER_IS_NON_ROOT}" ]]; then
|
||||
python3 manage.py document_index reindex --if-needed --no-progress-bar
|
||||
else
|
||||
s6-setuidgid paperless python3 manage.py document_index reindex --if-needed --no-progress-bar
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user