113 lines
4.1 KiB
Bash
113 lines
4.1 KiB
Bash
# ============================================================
|
||
# 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
|
||
# 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=3
|
||
|
||
# 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
|
||
#JONASSEARCH_RESULTS_PER_PAGE=10
|
||
#JONASSEARCH_MAX_RESULTS_PER_PAGE=50
|