Files
search/.env.example
T
2026-10-17 18:32:59 +02:00

126 lines
4.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================
# JonasSearch Crawler Gamma 0.1
# ============================================================
# PostgreSQL
JONASSEARCH_DB_HOST=127.0.0.1
JONASSEARCH_DB_PORT=25432
JONASSEARCH_DB_NAME=jonassearch
JONASSEARCH_DB_USER=jonassearch
JONASSEARCH_DB_PASSWORD=MeinStarkesPasswort123!
# Crawler
JONASSEARCH_START_URL=https://reddit.com
JONASSEARCH_WORKERS=4
# Mindestabstand zwischen Requests zur gleichen Domain
JONASSEARCH_DELAY=3.0
# Host-Scheduling: blockierte/rate-limitierte Domains werden automatisch
# übersprungen und später erneut versucht (mit exponentiellem Backoff).
# Kandidaten, die pro Claim-Runde in der Queue geprüft werden
#JONASSEARCH_CLAIM_BATCH=25
# Maximale Anzahl geprüfter Kandidaten pro Claim
#JONASSEARCH_CLAIM_SCAN_LIMIT=200
# Bekannte blockierte/rate-limitierte Hosts werden direkt in der
# Claim-Query ausgeschlossen (verhindert, dass ein blocked Host mit
# vielen URLs die restliche Queue verdeckt). Obergrenze für diese Liste;
# die am längsten blockierten Hosts werden zuerst berücksichtigt.
#JONASSEARCH_CLAIM_BUSY_HOST_LIMIT=1000
# Maximale Versuche pro URL (transiente Fehler werden erneut eingereiht),
# bevor der Eintrag endgültig failed wird
#JONASSEARCH_MAX_ATTEMPTS=5
# Wartezeiten über dieser Grenze (Sekunden) werden nicht inline geschlafen:
# das Item wird zurückgestellt und eine andere Domain gecrawlt
#JONASSEARCH_MAX_INLINE_WAIT=10
# Obergrenze für die Wartezeit, wenn gerade kein Host crawlbar ist
#JONASSEARCH_MAX_IDLE_SLEEP=30
# robots.txt Cache
JONASSEARCH_ROBOTS_CACHE_SECONDS=86400
# HTTP
JONASSEARCH_TIMEOUT=20
JONASSEARCH_MAX_CONTENT_LENGTH=5242880
# User-Agent
JONASSEARCH_USER_AGENT=JonasSearchBot/0.1 (+https://jonassearch.local/bot)
# ============================================================
# Rolling Updates (Launcher + Crawler)
# ============================================================
# Version dieser Crawler-Codebasis (NICHT die Deployment-Generation).
# Muss bei jedem verteilten Crawler-Änderung erhöht werden.
JONASSEARCH_CRAWLER_VERSION=5
# Wie oft jeder Crawler außerhalb der Transaktionen nach einer neuen
# Deployment-Generation sieht (Sekunden). Der Check setzt nur ein
# internes Signal; beendet wird sich erst am nächsten sicheren Commit.
JONASSEARCH_UPDATE_CHECK_SECONDS=30
# Verzeichnis für gestagte Crawler-Releases (releases/<VERSION>/crawler.py).
# Relative Pfade gelten relativ zur crawler.py.
#JONASSEARCH_RELEASES_DIR=releases
# Launcher: Wohin mit neuen Versionen? Eine der beiden Quellen setzen,
# sonst kann der Launcher nur extern abgelegte Releases prüfen/aktivieren.
#JONASSEARCH_UPDATE_SOURCE_URL=https://example.com/jonassearch/releases
#JONASSEARCH_UPDATE_SOURCE_DIR=/srv/jonassearch/new-release
# Launcher: Wartezeit nach Crash (Sekunden), bevor der Crawler neu startet
#JONASSEARCH_LAUNCHER_ERROR_RESTART_DELAY=10
# Launcher: Wartezeit vor dem Neustart nach einem Update-Zyklus
#JONASSEARCH_LAUNCHER_RESTART_DELAY=2
# ============================================================
# Suchmaschine (search/) – Port 8083
# ============================================================
# PostgreSQL-Textsuch-Konfiguration. MUSS zur Konfiguration passen,
# mit der der DB-Trigger den Suchvektor (pages.search_vector) baut –
# laut DB-Doku: 'simple'. Ansonsten finden die Queries nichts.
JONASSEARCH_TS_CONFIG=simple
# tsvector-Spalte der Tabelle `pages` erzwingen (optional,
# wird automatisch erkannt)
#JONASSEARCH_VECTOR_COLUMN=search_vector
# HTTP-API + Weboberfläche (search/api.py)
JONASSEARCH_API_HOST=0.0.0.0
JONASSEARCH_API_PORT=8083
# Ranking: ts_rank_cd-Gewichte (Titel=A, Überschriften=B, Inhalt=C)
#JONASSEARCH_RANK_WEIGHTS=A=1.0,B=0.6,C=0.3,D=0.1
# Ranking: Aktualitätsbonus (Faktor auf den Text-Rang)
#JONASSEARCH_FRESHNESS_WEIGHT=0.25
#JONASSEARCH_FRESHNESS_HALF_LIFE_DAYS=180
# Ranking: ts_rank_cd-Normalisierung (Bitmaske). 8 = Rang /
# (1 + log Dokumentlänge) – riesige Seiten dominieren sonst automatisch.
# 0 = keine Normalisierung.
#JONASSEARCH_RANK_NORMALIZATION=8
# Fallback bei sehr häufigen Begriffen: volles Ranking wird bei
# Zeitüberschreitung auf die ersten N Kandidaten (Indexreihenfolge)
# begrenzt, damit die Antwort immer kommt.
#JONASSEARCH_MAX_RANK_CANDIDATES=5000
# Schutz der großen DB: Statement-Timeouts (ms)
#JONASSEARCH_STATEMENT_TIMEOUT_MS=10000
#JONASSEARCH_COUNT_TIMEOUT_MS=4000
# Paginierung Websuche
#JONASSEARCH_RESULTS_PER_PAGE=10
#JONASSEARCH_MAX_RESULTS_PER_PAGE=50
# Bildersuche (Tab "Bilder", /api/images)
# Bildkacheln pro Ergebnisseite bzw. Maximum pro Seite
#JONASSEARCH_IMAGE_RESULTS_PER_PAGE=40
#JONASSEARCH_MAX_IMAGE_RESULTS_PER_PAGE=100
# Höchstens so viele Bilder pro Quellseite anzeigen (verhindert, dass
# Seiten mit vielen Bildern die Ergebnisse dominieren)
#JONASSEARCH_IMAGES_PER_SOURCE_PAGE=4