Erweiterte Crawler-Konfiguration

Übersicht

Dieser Leitfaden beschreibt erweiterte Konfigurationen für den Fess-Crawler. Für grundlegende Crawler-Konfigurationen siehe Crawler-Konfiguration: Web-, Dateiserver- und Datenbank-Crawling.

Warnung

Die Einstellungen auf dieser Seite können systemweite Auswirkungen haben. Testen Sie Konfigurationsänderungen gründlich, bevor Sie sie in Produktionsumgebungen anwenden.

Allgemeine Konfiguration

Speicherort der Konfigurationsdateien

Erweiterte Crawler-Konfigurationen werden in folgenden Dateien vorgenommen:

  • Hauptkonfiguration: /etc/fess/fess_config.properties (oder app/WEB-INF/classes/fess_config.properties)

  • Inhaltslängen-Konfiguration: app/WEB-INF/classes/crawler/contentlength.xml

  • Komponenten-Konfiguration: app/WEB-INF/classes/crawler/container.xml

Standard-Skriptsprache

Legt die Standard-Skriptsprache für den Crawler fest.

Eigenschaft Beschreibung Standard
crawler.default.script Crawler-Skriptsprache groovy
crawler.default.script=groovy

HTTP-Thread-Pool

Thread-Pool-Konfiguration für den HTTP-Crawler.

Eigenschaft Beschreibung Standard
crawler.http.thread_pool.size HTTP-Thread-Pool-Größe 0
# Bei 0 automatische Konfiguration
crawler.http.thread_pool.size=0

Dokumentverarbeitungs-Konfiguration

Grundkonfiguration

Eigenschaft Beschreibung Standard
crawler.document.max.site.length Maximale Zeichenlänge des Sitenamenfelds 100
crawler.document.site.encoding Codierung der Dokumentsite UTF-8
crawler.document.unknown.hostname Ersatzwert für unbekannte Hostnamen unknown
crawler.document.use.site.encoding.on.english Site-Codierung für englische Dokumente verwenden false
crawler.document.append.data Daten zum Dokument hinzufügen true
crawler.document.append.filename Dateinamen zum Dokument hinzufügen false

Konfigurationsbeispiel

crawler.document.max.site.length=100
crawler.document.site.encoding=UTF-8
crawler.document.unknown.hostname=unknown
crawler.document.use.site.encoding.on.english=false
crawler.document.append.data=true
crawler.document.append.filename=false

Wortverarbeitungs-Konfiguration

Eigenschaft Beschreibung Standard
crawler.document.max.alphanum.term.size Maximale Länge alphanumerischer Wörter 20
crawler.document.max.symbol.term.size Maximale Länge von Symbol-Wörtern 10
crawler.document.duplicate.term.removed Entfernung doppelter Wörter false

Konfigurationsbeispiel

# Maximale Länge alphanumerischer Zeichen auf 50 ändern
crawler.document.max.alphanum.term.size=50

# Maximale Länge von Symbolen auf 20 ändern
crawler.document.max.symbol.term.size=20

# Doppelte Wörter entfernen
crawler.document.duplicate.term.removed=true

Bemerkung

Das Erhöhen von max.alphanum.term.size ermöglicht die vollständige Indizierung langer IDs, Tokens, URLs usw., erhöht jedoch die Indexgröße.

Zeichenverarbeitungs-Konfiguration

Eigenschaft Beschreibung Standard
crawler.document.space.chars Definition von Leerzeichen u0009u000A...
crawler.document.fullstop.chars Definition von Satzendzeichen u002eu06d4...

Konfigurationsbeispiel

# Standardwerte (einschließlich Unicode-Zeichen)
crawler.document.space.chars=u0009u000Au000Bu000Cu000Du001Cu001Du001Eu001Fu0020u00A0u1680u180Eu2000u2001u2002u2003u2004u2005u2006u2007u2008u2009u200Au200Bu200Cu202Fu205Fu3000uFEFFuFFFDu00B6

crawler.document.fullstop.chars=u002eu06d4u2e3cu3002

Protokoll-Konfiguration

Unterstützte Protokolle

Eigenschaft Beschreibung Standard
crawler.web.protocols Protokolle für Web-Crawling http,https
crawler.file.protocols Protokolle für Datei-Crawling file,smb,smb1,ftp,storage,s3,gcs
crawler.crawling.data.encoding Kodierung der Crawling-Daten UTF-8

Konfigurationsbeispiel

crawler.web.protocols=http,https
crawler.file.protocols=file,smb,smb1,ftp,storage,s3,gcs
crawler.crawling.data.encoding=UTF-8

Umgebungsvariablen-Parameter

Eigenschaft Beschreibung Standard
crawler.data.env.param.key.pattern Muster für Umgebungsvariablen-Parameterschlüssel ^FESS_ENV_.*
# Umgebungsvariablen beginnend mit FESS_ENV_ können in Crawl-Konfigurationen verwendet werden
crawler.data.env.param.key.pattern=^FESS_ENV_.*

Daten-Serialisierer

Eigenschaft Beschreibung Standard
crawler.data.serializer Serialisierungsmethode für Crawl-Daten kryo
crawler.data.serializer=kryo

robots.txt-Konfiguration

Eigenschaft Beschreibung Standard
crawler.ignore.robots.txt robots.txt ignorieren false
crawler.ignore.robots.tags Robots-Meta-Tags ignorieren false
crawler.ignore.content.exception Inhaltsausnahmen ignorieren true
# robots.txt ignorieren (nicht empfohlen)
crawler.ignore.robots.txt=false

# Robots-Meta-Tags (einschließlich X-Robots-Tag) ignorieren
crawler.ignore.robots.tags=false

# Inhaltsausnahmen ignorieren
crawler.ignore.content.exception=true

Warnung

Die Einstellung crawler.ignore.robots.txt=true kann gegen Nutzungsbedingungen von Websites verstoßen. Seien Sie vorsichtig beim Crawlen externer Sites.

Fehlerbehandlungs-Konfiguration

Eigenschaft Beschreibung Standard
crawler.failure.url.status.codes Als Fehler behandelte HTTP-Statuscodes (kommagetrennt) 404,403,410
# Zusätzlich zu den Standardwerten (404,403,410) auch 500 als Fehler behandeln
crawler.failure.url.status.codes=404,403,410,500

Systemüberwachungs-Konfiguration

Eigenschaft Beschreibung Standard
crawler.system.monitor.interval Systemüberwachungsintervall (Sekunden) 60
# System alle 30 Sekunden überwachen
crawler.system.monitor.interval=30

Hot-Thread-Konfiguration

Eigenschaft Beschreibung Standard
crawler.hotthread.ignore_idle_threads Leerlaufende Threads ignorieren true
crawler.hotthread.interval Snapshot-Intervall 500ms
crawler.hotthread.snapshots Anzahl Snapshots 10
crawler.hotthread.threads Anzahl überwachter Threads 3
crawler.hotthread.timeout Timeout 30s
crawler.hotthread.type Überwachungstyp cpu

Konfigurationsbeispiel

crawler.hotthread.ignore_idle_threads=true
crawler.hotthread.interval=500ms
crawler.hotthread.snapshots=10
crawler.hotthread.threads=3
crawler.hotthread.timeout=30s
crawler.hotthread.type=cpu

Metadaten-Konfiguration

Eigenschaft Beschreibung Standard
crawler.metadata.content.excludes Auszuschließende Metadaten resourceName,X-Parsed-By...
crawler.metadata.name.mapping Metadaten-Namen-Mapping title=title:string...
# Auszuschließende Metadaten
crawler.metadata.content.excludes=resourceName,X-Parsed-By,Content-Encoding.*,Content-Type.*,X-TIKA.*,X-FESS.*

# Metadaten-Namen-Mapping
crawler.metadata.name.mapping=\
    title=title:string\n\
    Title=title:string\n\
    dc:title=title:string

HTML-Crawler-Konfiguration

XPath-Konfiguration

XPath-Konfiguration zum Extrahieren von HTML-Elementen.

Eigenschaft Beschreibung Standard
crawler.document.html.content.xpath XPath für Inhalt //BODY
crawler.document.html.lang.xpath XPath für Sprache //HTML/@lang
crawler.document.html.digest.xpath XPath für Digest //META[@name='description']/@content
crawler.document.html.canonical.xpath XPath für kanonische URL //LINK[@rel='canonical'][1]/@href

Konfigurationsbeispiel

# Standardkonfiguration
crawler.document.html.content.xpath=//BODY
crawler.document.html.lang.xpath=//HTML/@lang
crawler.document.html.digest.xpath=//META[@name='description']/@content
crawler.document.html.canonical.xpath=//LINK[@rel='canonical'][1]/@href

Beispiele für benutzerdefinierte XPath

# Nur bestimmte div-Elemente als Inhalt extrahieren
crawler.document.html.content.xpath=//DIV[@id='main-content']

# Auch Meta-Keywords in Digest einbeziehen
crawler.document.html.digest.xpath=//META[@name='description']/@content|//META[@name='keywords']/@content

HTML-Tag-Verarbeitung

Eigenschaft Beschreibung Standard
crawler.document.html.pruned.tags Zu entfernende HTML-Tags noscript,script,style,header,footer,aside,nav,a[rel=nofollow]
crawler.document.html.max.digest.length Maximale Digest-Länge 120
crawler.document.html.default.lang Standardsprache (leer)

Konfigurationsbeispiel

# Tags zum Entfernen hinzufügen
crawler.document.html.pruned.tags=noscript,script,style,header,footer,aside,nav,a[rel=nofollow],form

# Digest-Länge auf 200 Zeichen
crawler.document.html.max.digest.length=200

# Standardsprache auf Deutsch
crawler.document.html.default.lang=de

URL-Musterfilter

Eigenschaft Beschreibung Standard
crawler.document.html.default.include.index.patterns In Index einzuschließende URL-Muster (leer)
crawler.document.html.default.exclude.index.patterns Aus Index auszuschließende URL-Muster (?i).*(css|js|jpeg...)
crawler.document.html.default.include.search.patterns In Suchergebnisse einzuschließende URL-Muster (leer)
crawler.document.html.default.exclude.search.patterns Aus Suchergebnissen auszuschließende URL-Muster (leer)

Konfigurationsbeispiel

# Standard-Ausschlussmuster
crawler.document.html.default.exclude.index.patterns=(?i).*(css|js|jpeg|jpg|gif|png|bmp|wmv|xml|ico|exe)

# Nur bestimmte Pfade indizieren
crawler.document.html.default.include.index.patterns=https://example\\.com/docs/.*

Datei-Crawler-Konfiguration

Grundkonfiguration

Eigenschaft Beschreibung Standard
crawler.document.file.name.encoding Dateinamen-Codierung (leer)
crawler.document.file.no.title.label Label für Dateien ohne Titel No title.
crawler.document.file.ignore.empty.content Leere Inhalte ignorieren false
crawler.document.file.max.title.length Maximale Titellänge 100
crawler.document.file.max.digest.length Maximale Digest-Länge 200

Konfigurationsbeispiel

# Windows-31J-Dateinamen verarbeiten
crawler.document.file.name.encoding=Windows-31J

# Label für Dateien ohne Titel
crawler.document.file.no.title.label=Kein Titel

# Leere Dateien ignorieren
crawler.document.file.ignore.empty.content=true

# Titel- und Digest-Länge
crawler.document.file.max.title.length=200
crawler.document.file.max.digest.length=500

Inhaltsverarbeitung

Eigenschaft Beschreibung Standard
crawler.document.file.append.meta.content Metadaten zum Inhalt hinzufügen true
crawler.document.file.append.body.content Haupttext zum Inhalt hinzufügen true
crawler.document.file.default.lang Standardsprache (leer)

Konfigurationsbeispiel

crawler.document.file.append.meta.content=true
crawler.document.file.append.body.content=true
crawler.document.file.default.lang=de

Datei-URL-Musterfilter

Eigenschaft Beschreibung Standard
crawler.document.file.default.include.index.patterns In Index einzuschließende Muster (leer)
crawler.document.file.default.exclude.index.patterns Aus Index auszuschließende Muster (leer)
crawler.document.file.default.include.search.patterns In Suchergebnisse einzuschließende Muster (leer)
crawler.document.file.default.exclude.search.patterns Aus Suchergebnissen auszuschließende Muster (leer)

Konfigurationsbeispiel

# Nur bestimmte Erweiterungen indizieren
crawler.document.file.default.include.index.patterns=.*\\.(pdf|docx|xlsx|pptx)$

# Temp-Ordner ausschließen
crawler.document.file.default.exclude.index.patterns=.*/temp/.*

MIME-Typ-Erkennung überschreiben

Standardmäßig verwendet Fess Apache Tika für die inhaltsbasierte MIME-Typ-Erkennung. In einigen Fällen kann die inhaltsbasierte Erkennung falsche Ergebnisse liefern. Beispielsweise können Oracle-SQL-Dateien, die mit REM-Kommentaren beginnen, fälschlicherweise als Batch-Dateien (application/x-bat) erkannt werden, da das Schlüsselwort REM dem Magic-Pattern von Batch-Dateien entspricht.

Die Eigenschaft crawler.document.mimetype.extension.overrides ermöglicht es, die MIME-Typ-Erkennung basierend auf Dateierweiterungen zu überschreiben und die inhaltsbasierte Erkennung für bestimmte Dateitypen zu umgehen.

Eigenschaft Beschreibung Standard
crawler.document.mimetype.extension.overrides Zuordnungen von Erweiterung zu MIME-Typ (eine pro Zeile, Format: .ext=mime/type) (leer)

Konfigurationsbeispiel

# MIME-Typ-Erkennung für SQL-Dateien überschreiben
crawler.document.mimetype.extension.overrides=\
.sql=text/x-sql\n\
.plsql=text/x-plsql\n\
.pls=text/x-plsql

Jede Zeile enthält eine Zuordnung im Format .Erweiterung=MIME-Typ. Mehrere Zuordnungen werden durch \n (Zeilenumbruch) getrennt. Der Erweiterungsabgleich unterscheidet nicht zwischen Groß- und Kleinschreibung (.SQL und .sql werden gleich behandelt).

Bemerkung

Wenn eine Dateierweiterung einem Eintrag in dieser Zuordnung entspricht, wird der konfigurierte MIME-Typ sofort zurückgegeben, ohne eine inhaltsbasierte Erkennung durchzuführen. Dateien mit Erweiterungen, die nicht in der Zuordnung enthalten sind, verwenden weiterhin die normale Tika-Erkennung.

Cache-Konfiguration

Dokumenten-Cache

Eigenschaft Beschreibung Standard
crawler.document.cache.enabled Dokumenten-Cache aktivieren true
crawler.document.cache.max.size Maximale Cache-Größe (Bytes) 2621440 (2,5 MB)
crawler.document.cache.supported.mimetypes Zu cachende MIME-Typen text/html
crawler.document.cache.html.mimetypes Als HTML zu behandelnde MIME-Typen text/html

Konfigurationsbeispiel

# Dokumenten-Cache aktivieren
crawler.document.cache.enabled=true

# Cache-Größe auf 5 MB
crawler.document.cache.max.size=5242880

# Zu cachende MIME-Typen
crawler.document.cache.supported.mimetypes=text/html,application/xhtml+xml

# Als HTML zu behandelnde MIME-Typen
crawler.document.cache.html.mimetypes=text/html,application/xhtml+xml

Bemerkung

Bei aktiviertem Cache wird in Suchergebnissen ein Cache-Link angezeigt, über den Benutzer den Inhalt zum Zeitpunkt des Crawlings einsehen können.

JVM-Optionen

Sie können JVM-Optionen für den Crawler-Prozess konfigurieren.

Eigenschaft Beschreibung Standard
jvm.crawler.options JVM-Optionen für Crawler -Xms128m -Xmx512m...

Standardkonfiguration

jvm.crawler.options=-Xms128m -Xmx512m \
    -XX:MaxMetaspaceSize=128m \
    -XX:+UseG1GC \
    -XX:MaxGCPauseMillis=60000 \
    -XX:-HeapDumpOnOutOfMemoryError

Bemerkung

Oben sind nur die wichtigsten Optionen aufgeführt. Die tatsächlichen Standardwerte umfassen etwa 40 Optionen, darunter jcifs-SMB-Timeouts, Netty-Einstellungen, Log4j-Konfiguration, detaillierte G1GC-Einstellungen, PDFBox-Einstellungen usw. Die vollständigen Standardwerte finden Sie in fess_config.properties. Ändern Sie bei der Anpassung nur die erforderlichen Optionen und behalten Sie die anderen Standardwerte bei.

Erklärung wichtiger Optionen

Option Beschreibung
-Xms128m Initiale Heap-Größe (128 MB)
-Xmx512m Maximale Heap-Größe (512 MB)
-XX:MaxMetaspaceSize=128m Maximale Metaspace-Größe (128 MB)
-XX:+UseG1GC G1-Garbage-Collector verwenden
-XX:MaxGCPauseMillis=60000 Ziel für GC-Pausenzeit (60 Sekunden)
-XX:-HeapDumpOnOutOfMemoryError Heap-Dumps bei OutOfMemory deaktivieren

Beispiele für benutzerdefinierte Konfiguration

Beim Crawlen großer Dateien:

jvm.crawler.options=-Xms256m -Xmx2g \
    -XX:MaxMetaspaceSize=256m \
    -XX:+UseG1GC \
    -XX:MaxGCPauseMillis=60000

Beim Debuggen:

jvm.crawler.options=-Xms128m -Xmx512m \
    -XX:MaxMetaspaceSize=128m \
    -XX:+UseG1GC \
    -XX:+HeapDumpOnOutOfMemoryError \
    -XX:HeapDumpPath=/tmp/crawler_dump.hprof

Details siehe Speicherkonfiguration.

Leistungsoptimierung

Optimierung der Crawl-Geschwindigkeit

1. Thread-Anzahl anpassen

Durch Erhöhung der Anzahl paralleler Crawls kann die Crawl-Geschwindigkeit verbessert werden.

# Thread-Anzahl in Crawl-Konfiguration der Verwaltungsoberfläche anpassen
Thread-Anzahl: 10

Beachten Sie jedoch die Last auf dem Zielserver.

2. Timeout anpassen

Bei langsamen Sites passen Sie Timeouts an.

# Zu „Konfigurationsparametern" der Crawl-Konfiguration hinzufügen
client.connectionTimeout=10000
client.soTimeout=30000

3. Unnötige Inhalte ausschließen

Durch Ausschluss von Bildern, CSS, JavaScript-Dateien usw. wird die Crawl-Geschwindigkeit verbessert.

# URL-Ausschlussmuster
.*\.(jpg|jpeg|png|gif|css|js|ico)$

4. Retry-Einstellungen

Die Anzahl der HTTP-Crawl-Wiederholungsversuche (Standard: 5) und das Wiederholungsintervall (Standard: 500 ms) sind fest eingebaut und können nicht über das Feld „Konfigurationsparameter“ einer Crawl-Konfiguration geändert werden. Um die Wartezeit bei nicht reagierenden URLs zu verkürzen, passen Sie die oben beschriebenen Timeouts an oder schließen Sie nicht benötigte URLs aus.

Optimierung der Speichernutzung

1. Heap-Größe anpassen

jvm.crawler.options=-Xms256m -Xmx1g

2. Cache-Größe anpassen

crawler.document.cache.max.size=1048576  # 1 MB

3. Große Dateien ausschließen

# Zu „Konfigurationsparametern" der Crawl-Konfiguration hinzufügen
client.maxContentLength=10485760  # 10 MB

Details siehe Speicherkonfiguration.

Verbesserung der Indexqualität

1. XPath optimieren

Schließen Sie unnötige Elemente (Navigation, Werbung usw.) aus.

crawler.document.html.content.xpath=//DIV[@id='main-content']
crawler.document.html.pruned.tags=noscript,script,style,header,footer,aside,nav,form,iframe

2. Digest optimieren

crawler.document.html.max.digest.length=200

3. Metadaten-Mapping

crawler.metadata.name.mapping=\
    title=title:string\n\
    description=digest:string\n\
    keywords=label:string

Fehlersuche

Speichermangel

Symptome:

  • OutOfMemoryError in fess_crawler.log aufgezeichnet

  • Crawling stoppt mittendrin

Gegenmaßnahmen:

  1. Crawler-Heap-Größe erhöhen

    jvm.crawler.options=-Xms256m -Xmx2g
    
  2. Anzahl paralleler Threads reduzieren

  3. Große Dateien ausschließen

Details siehe Speicherkonfiguration.

Crawling ist langsam

Symptome:

  • Crawling dauert zu lange

  • Häufige Timeouts

Gegenmaßnahmen:

  1. Thread-Anzahl erhöhen (Last auf Zielserver beachten)

  2. Timeouts anpassen

    client.connectionTimeout=5000
    client.soTimeout=10000
    
  3. Unnötige URLs ausschließen

Bestimmte Inhalte können nicht extrahiert werden

Symptome:

  • Seitentext wird nicht korrekt extrahiert

  • Wichtige Informationen fehlen in Suchergebnissen

Gegenmaßnahmen:

  1. XPath überprüfen und anpassen

    crawler.document.html.content.xpath=//DIV[@class='content']
    
  2. Zu entfernende Tags überprüfen

    crawler.document.html.pruned.tags=script,style
    
  3. Bei dynamisch durch JavaScript generierten Inhalten alternative Methoden (z. B. API-Crawling) in Betracht ziehen

Zeichenkodierungsprobleme treten auf

Symptome:

  • Zeichenkodierungsprobleme in Suchergebnissen

  • Bestimmte Sprachen werden nicht korrekt angezeigt

Gegenmaßnahmen:

  1. Codierungseinstellungen überprüfen

    crawler.document.site.encoding=UTF-8
    crawler.crawling.data.encoding=UTF-8
    
  2. Dateinamen-Codierung konfigurieren

    crawler.document.file.name.encoding=Windows-31J
    
  3. Codierungsfehler im Protokoll überprüfen

    grep -i "encoding" /var/log/fess/fess_crawler.log
    

Best Practices

  1. In Testumgebung validieren

    Validieren Sie gründlich in Testumgebung, bevor Sie in Produktionsumgebung anwenden.

  2. Schrittweise Anpassung

    Ändern Sie Konfigurationen nicht auf einmal stark, sondern passen Sie schrittweise an und überprüfen Sie die Wirkung.

  3. Protokolle überwachen

    Überwachen Sie nach Konfigurationsänderungen Protokolle auf Fehler oder Leistungsprobleme.

    tail -f /var/log/fess/fess_crawler.log
    
  4. Backup

    Erstellen Sie vor Änderung von Konfigurationsdateien unbedingt ein Backup.

    cp /etc/fess/fess_config.properties /etc/fess/fess_config.properties.bak
    
  5. Dokumentation

    Dokumentieren Sie geänderte Konfigurationen und deren Begründung.

S3/GCS-Crawler-Konfiguration

S3-Crawler

Konfiguration für das Crawlen von S3 und S3-kompatiblem Speicher (wie MinIO). Fügen Sie Folgendes zu „Konfigurationsparameter“ in den Datei-Crawl-Einstellungen hinzu.

Parameter Beschreibung Standard
client.endpoint S3-Endpunkt-URL (Erforderlich)
client.accessKey Zugriffsschlüssel (Erforderlich)
client.secretKey Geheimer Schlüssel (Erforderlich)
client.region AWS-Region us-east-1
client.maxContentLength Maximale Größe (Bytes) der abzurufenden Objekte; größere Objekte werden übersprungen (unbegrenzt)
client.maxCachedContentSize Maximale Größe (Bytes), die im Arbeitsspeicher gecacht wird; größere Inhalte werden in einer temporären Datei gespeichert 1048576 (1MB)
client.accessTimeout Zugriffs-Timeout (Sekunden). Deaktiviert, wenn nicht gesetzt (unbegrenzt)

Konfigurationsbeispiel

client.endpoint=https://s3.ap-northeast-1.amazonaws.com
client.accessKey=AKIAIOSFODNN7EXAMPLE
client.secretKey=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
client.region=ap-northeast-1

GCS-Crawler

Konfiguration für das Crawlen von Google Cloud Storage. Fügen Sie Folgendes zu „Konfigurationsparameter“ in den Datei-Crawl-Einstellungen hinzu.

Parameter Beschreibung Standard
client.projectId Google Cloud-Projekt-ID (Erforderlich)
client.credentialsFile Pfad zur Dienstkonto-JSON-Datei (Optional)
client.endpoint Benutzerdefinierter Endpunkt (Optional)
client.maxContentLength Maximale Größe (Bytes) der abzurufenden Objekte; größere Objekte werden übersprungen (unbegrenzt)
client.maxCachedContentSize Maximale Größe (Bytes), die im Arbeitsspeicher gecacht wird; größere Inhalte werden in einer temporären Datei gespeichert 1048576 (1MB)
client.accessTimeout Zugriffs-Timeout (Sekunden). Deaktiviert, wenn nicht gesetzt (unbegrenzt)

Konfigurationsbeispiel

client.projectId=my-gcp-project
client.credentialsFile=/etc/fess/gcs-credentials.json

Bemerkung

Wenn credentialsFile weggelassen wird, wird die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS verwendet.

Crawlen dynamischer Inhalte (Playwright)

Bei Seiten, die per JavaScript gerendert werden (etwa SPAs), erhält der gewöhnliche HTTP-Crawler nur das HTML vor dem Rendern, sodass ihr Fließtext nicht indiziert wird. Der Playwright-Crawler rendert die Seite zunächst in einem Headless-Browser und ruft anschließend den Inhalt ab.

Aktivierung

Fügen Sie Folgendes zu „Konfigurationsparameter“ in einer Web-Crawl-Konfiguration hinzu.

client.crawlerClients=playwright:http://.*,playwright:https://.*

Der Teil nach playwright: ist ein regulärer Ausdruck für die URLs, die mit Playwright abgerufen werden sollen. Im obigen Beispiel wird jede HTTP/HTTPS-URL mit Playwright abgerufen. Um Playwright nur für bestimmte Sites zu verwenden, geben Sie diese wie folgt an.

client.crawlerClients=playwright:https://example\.com/app/.*

Bemerkung

Die Browser-Binärdateien von Playwright sind nicht im Fess-Paket enthalten. Sie werden beim ersten Crawl heruntergeladen. Installieren Sie sie daher in einer Umgebung ohne Zugang zu externen Netzwerken vorab als der Betriebssystembenutzer, der den Crawler ausführt.

npx playwright install --with-deps

Konfigurationsparameter

Die folgenden Parameter werden mit dem Präfix client. in „Konfigurationsparameter“ einer Crawl-Konfiguration eingetragen.

Parameter Beschreibung Standard
client.renderedState Ladezustand, auf den vor dem Abrufen des Inhalts gewartet wird. Geben Sie LOAD, DOMCONTENTLOADED oder NETWORKIDLE in Großbuchstaben an NETWORKIDLE
client.renderedStateTimeout Obergrenze für das Warten auf renderedState (Millisekunden). Bei 0 oder kleiner gilt der Playwright-Standardwert (30000) 0
client.navigationTimeout Obergrenze für einen Seitenwechsel (Millisekunden). Bei 0 oder kleiner gilt der Playwright-Standardwert (30000) (nicht gesetzt)
client.contentWaitDuration Zusätzliche Wartezeit nach dem Erreichen von renderedState und vor dem Abrufen des Inhalts (Millisekunden) 0
client.sharedClient Den Playwright-Worker (Browser) für alle Clients gemeinsam nutzen false
client.blockedResourceTypes Ressourcentypen, die der Browser nicht abrufen soll (kommagetrennt) (leer)
client.ignoreHttpsErrors Fehler bei der Überprüfung von HTTPS-Zertifikaten ignorieren false
client.proxyBypass Hosts, die den Proxy umgehen (kommagetrennt) (leer)

Konfigurationsbeispiel

client.crawlerClients=playwright:http://.*,playwright:https://.*
client.renderedState=NETWORKIDLE
client.renderedStateTimeout=20000
client.navigationTimeout=60000
client.contentWaitDuration=1000
client.blockedResourceTypes=image,media,font,ping,beacon,cspreport

Bemerkung

Der User-Agent und die Anfrage-Header, die in der Crawl-Konfiguration konfiguriert sind, werden unverändert verwendet. Gemeinsame Parameter wie client.proxyHost, client.proxyPort und client.maxContentLength werden ebenfalls auf den Browser angewendet.

Bemerkung

Ein Playwright-Client verwendet eine Browser-Seite, und die Anfragen an ihn werden seriell verarbeitet. Eine höhere Thread-Anzahl in der Crawl-Konfiguration beschleunigt den Abruf mit Playwright nicht entsprechend.

Nur in der DI-Definition konfigurierbare Einträge

Die folgenden Einträge können nicht über „Konfigurationsparameter“ geändert werden. Um sie zu ändern, erstellen Sie app/WEB-INF/classes/crawler/client+playwrightClient.xml und definieren die Komponente playwrightClient neu.

Eigenschaft Beschreibung Standard
browserName Zu verwendender Browser: chromium, firefox oder webkit chromium
launchOptions Startoptionen des Browsers (BrowserType.LaunchOptions) headless=true
newContextOptions Optionen des Browser-Kontexts (Browser.NewContextOptions) (keine)
downloadTimeout Obergrenze für das Warten auf einen Dateidownload (Sekunden) 15
closeTimeout Obergrenze für das Warten auf das Beenden des Browsers (Sekunden) 15

Konfigurationsbeispiel

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//DBFLUTE//DTD LastaDi 1.0//EN"
    "http://dbflute.org/meta/lastadi10.dtd">
<components namespace="fessCrawler">
    <include path="crawler/container.xml" />
    <component name="playwrightClient"
        class="org.codelibs.fess.crawler.client.http.PlaywrightClient"
        instance="prototype">
        <property name="downloadTimeout">60</property>
        <property name="closeTimeout">30</property>
        <property name="launchOptions">
            <component
                class="com.microsoft.playwright.BrowserType$LaunchOptions"
                instance="prototype">
                <property name="headless">true</property>
            </component>
        </property>
    </component>
</components>

Bemerkung

Wenn Sie playwrightClient neu definieren, wird die Komponentendefinition aus der crawler/client++.xml des Plugins vollständig ersetzt. Eigenschaften, die Sie nicht angeben, kehren zu ihren Standardwerten zurück; geben Sie daher wie im obigen Beispiel alle benötigten Eigenschaften an. Kopieren Sie außerdem die crawler/client++.xml nicht einfach an diese Stelle: Dieselbe Komponente wäre dann doppelt registriert und der Start würde fehlschlagen.

Warnung

downloadTimeout und closeTimeout werden in Sekunden angegeben, navigationTimeout, renderedStateTimeout und contentWaitDuration dagegen in Millisekunden. Achten Sie darauf, sie nicht zu verwechseln.

Blockieren unnötiger Ressourcen

client.blockedResourceTypes nimmt eine kommagetrennte Liste der Ressourcentypen entgegen, die der Browser nicht abrufen soll. Zulässig sind die Ressourcentypen von Playwright (stylesheet, image, media, font, script, texttrack, xhr, fetch, eventsource, websocket, manifest, other, ping, cspreport und beacon). Standardmäßig wird nichts blockiert.

image, media, font, ping, beacon und cspreport sind die Typen, die sich gefahrlos angeben lassen. Bei den letzten dreien handelt es sich um Tracker-Verkehr nach Beacon-Art, den nichts auf der Seite zurückliest.

client.blockedResourceTypes=image,media,font,ping,beacon,cspreport

Geben Sie nur Typen an, die ein Crawl nicht liest. Indem weniger der für die Anzeige einer Seite benötigten Ressourcen abgerufen werden, verringern sich sowohl die Dauer eines Crawls als auch das übertragene Datenvolumen.

Warnung

Geben Sie document nicht an. Der Abruf der Seite selbst würde blockiert und der Crawl käme nicht zustande; der Wert wird daher mit einer Warnung ignoriert.

Bemerkung

Auch ein Typ, der nicht in der obigen Liste steht, wird mit einer Warnung gemeldet. Ein Tippfehler im Plural wie images passt auf keine Anfrage und blockiert daher nichts. Die Liste ist die Vereinigung der Typen, die die drei Browser-Engines melden; einige Typen werden vom jeweils verwendeten Browser deshalb nie gemeldet: texttrack meldet nur Chromium, und WebKit meldet weder media noch manifest. Die Angabe eines Typs, der nicht gemeldet wird, blockiert einfach nichts.

Bemerkung

Das Blockieren von script oder xhr verhindert das Rendern durch JavaScript, womit der Einsatz von Playwright sinnlos wird. Für einen Crawl, der ausschließlich serverseitig gerenderte Seiten erfasst, ist es nützlich; wählen Sie jedoch normalerweise aus den oben genannten Typen aus, die sich gefahrlos angeben lassen.

Änderungen in 15.8

Beim Upgrade von 15.7 oder älter hat sich das Verhalten des Playwright-Crawlers wie folgt geändert.

  • User-Agent: Der User-Agent der Crawl-Konfiguration wird jetzt tatsächlich vom Browser gesendet. In 15.7 und älter wurde der Browser-Standardwert HeadlessChrome/... gesendet. Bei Sites, die ihre Antwort je nach User-Agent unterschiedlich ausgeben, kann sich der abgerufene Inhalt ändern.

  • Anfrage-Header: Die Anfrage-Header der Crawl-Konfiguration werden jetzt auf den Browser angewendet. Kommt derselbe Header-Name mehrfach vor, werden die Werte zu einem einzigen kommagetrennten Wert zusammengefasst.

  • Downloads über eine Weiterleitung: Die aufgezeichnete URL ist jetzt das Weiterleitungsziel (die URL, die die Datei tatsächlich zurückgegeben hat). Ist das Weiterleitungsziel eine URL außerhalb des Crawl-Bereichs, wird sie als außerhalb des Bereichs ausgeschlossen.

  • Warten auf ``renderedState``: Eine Zeitüberschreitung während des Wartens gilt nicht mehr als Fehler; der zu diesem Zeitpunkt geladene Inhalt wird unverändert verwendet. Auch Seiten, die NETWORKIDLE nie erreichen, können indiziert werden.

  • Angabe von Timeouts: client.navigationTimeout und client.renderedStateTimeout, die die Ladezeit der gesamten Seite begrenzen, wurden hinzugefügt. client.connectionTimeout und client.soTimeout sind Timeouts pro Socket und werden nicht auf den Browser angewendet.

Referenzinformationen