Übersicht
Der CSV-Konnektor bietet die Funktionalität, Daten aus CSV-Dateien abzurufen und im Fess-Index zu registrieren.
Für diese Funktion ist das Plugin fess-ds-csv erforderlich.
Voraussetzungen
Die Installation des Plugins ist erforderlich
Zugriff auf die CSV-Datei ist erforderlich
Die Zeichenkodierung der CSV-Datei muss bekannt sein
Plugin-Installation
Methode 1: JAR-Datei direkt platzieren
Methode 2: Über die Administrationsoberfläche installieren
Öffnen Sie „System“ -> „Plugins“
Laden Sie die JAR-Datei hoch
Starten Sie Fess neu
Konfiguration
Konfigurieren Sie über die Administrationsoberfläche unter „Crawler“ -> „Datenspeicher“ -> „Neu erstellen“.
Grundeinstellungen
| Einstellung | Beispielwert |
|---|---|
| Name | Products CSV |
| Handler-Name | CsvDataStore |
| Aktiviert | Ein |
Parameter-Einstellungen
Lokale Datei:
Mehrere Dateien:
Bemerkung
Die Anführungszeichen- (Quote-) Verarbeitung und die Escape-Verarbeitung sind standardmäßig deaktiviert. Wenn Sie CSV-Dateien verarbeiten, bei denen Felder in Anführungszeichen eingeschlossen sind und Trennzeichen oder Zeilenumbrüche enthalten (RFC 4180-konform), geben Sie explizit quote_disabled=false an, um die Anführungszeichenverarbeitung zu aktivieren. Weitere Details finden Sie im Abschnitt „Aktivierung der Anführungszeichen- und Escape-Verarbeitung“ weiter unten.
Parameterliste
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
files | Nein | Pfad zur CSV-Datei (lokaler Pfad, mehrere kommagetrennt möglich). Entweder files oder directories muss angegeben werden. Werden beide angegeben, hat files Vorrang. Die angegebenen Dateien müssen die Endung .csv oder .tsv haben; Dateien mit anderen Endungen werden übersprungen. |
directories | Nein | Pfad zu Verzeichnissen, die CSV-Dateien enthalten (mehrere kommagetrennt möglich). Es werden nur .csv- und .tsv-Dateien im Verzeichnis verarbeitet. Wird verwendet, wenn files nicht angegeben ist. |
file_encoding | Nein | Zeichenkodierung (Standard: UTF-8) |
has_header_line | Nein | Vorhandensein einer Kopfzeile (Standard: false) |
separator_character | Nein | Trennzeichen (Standard: Komma ,). Escape-Sequenzen wie \t können angegeben werden (für Tab-Trennung). |
quote_character | Nein | Anführungszeichen (Standard: doppeltes Anführungszeichen "). Die Anführungszeichenverarbeitung ist jedoch standardmäßig deaktiviert (siehe quote_disabled). |
escape_character | Nein | Escape-Zeichen (Standard: Backslash \). Die Escape-Verarbeitung ist jedoch standardmäßig deaktiviert (siehe escape_disabled). |
Bemerkung
Wenn sowohl files als auch directories leer sind, tritt ein Fehler (DataStoreException) auf. Geben Sie mindestens einen der beiden Parameter an.
Erweiterte Parameter
Die folgenden Parameter steuern das CSV-Parsing-Verhalten im Detail:
| Parameter | Beschreibung |
|---|---|
quote_disabled | Gibt an, ob die Anführungszeichenverarbeitung deaktiviert ist (Standard: true). Geben Sie false an, um RFC 4180-konforme Felder mit Anführungszeichen zu verarbeiten. |
escape_disabled | Gibt an, ob die Escape-Verarbeitung deaktiviert ist (Standard: true). Geben Sie false an, um das Escaping mit escape_character zu aktivieren. |
skip_lines | Anzahl der zu überspringenden Kopfzeilen (Standard: 0) |
ignore_line_patterns | Reguläres Ausdrucksmuster für zu ignorierende Zeilen (z. B. ^#.* zum Ignorieren von Kommentarzeilen) |
ignore_empty_lines | Gibt an, ob leere Zeilen ignoriert werden sollen (Standard: false) |
ignore_trailing_whitespaces | Gibt an, ob nachgestellte Leerzeichen ignoriert werden sollen (Standard: false) |
ignore_leading_whitespaces | Gibt an, ob führende Leerzeichen ignoriert werden sollen (Standard: false) |
null_string | Zeichenkette, die als Null-Wert behandelt wird |
break_string | Zeichenkette, durch die Zeilenumbrüche in Feldwerten ersetzt werden |
readInterval | Wartezeit in Millisekunden zwischen der Verarbeitung einzelner Datensätze (Standard: 0) |
Skript-Einstellungen
Die Werte der einzelnen Felder werden unter Bezugnahme auf die Spaltenwerte der CSV-Datei zusammengestellt. Auf die Spalten der CSV-Datei kann im Skript direkt als Variablen ohne Präfix zugegriffen werden (es wird kein Präfix wie data. verwendet).
Mit Kopfzeile (Referenz über Spaltenname):
Ohne Kopfzeile (Referenz über Spaltenindex):
Verfügbare Felder
<Spaltenname>- Direkter Zugriff über den Spaltennamen der Kopfzeile (nur beihas_header_line=true; gültig, wenn der Spaltenname nicht leer ist)cell<N>- Zugriff über den Spaltenindex (cell1,cell2… beginnend bei 1; unabhängig vom Vorhandensein einer Kopfzeile verfügbar)csvfile- Vollständiger Pfad der aktuell verarbeiteten CSV-Dateicsvfilename- Dateiname der aktuell verarbeiteten CSV-Datei
Bemerkung
Enthält ein Spaltenname Leerzeichen, Bindestriche oder andere Zeichen, die als Groovy-Bezeichner ungültig sind, kann nicht über den Spaltennamen zugegriffen werden. Verwenden Sie in diesem Fall cell<N>.
CSV-Format-Details
Standard-CSV (RFC 4180-konform)
Bemerkung
Um wie im obigen Beispiel bei "Book, Programming" Trennzeichen innerhalb eines Feldes durch Einschließen in Anführungszeichen zu verwenden, muss die Anführungszeichenverarbeitung mit quote_disabled=false aktiviert werden. Ist die Anführungszeichenverarbeitung deaktiviert (Standard), werden Anführungszeichen als normale Zeichen behandelt und Felder am Trennzeichen aufgeteilt.
Aktivierung der Anführungszeichen- und Escape-Verarbeitung
Die Anführungszeichen- und Escape-Verarbeitung ist standardmäßig deaktiviert. Aktivieren Sie sie wie folgt explizit.
Anführungszeichenverarbeitung aktivieren:
Escape-Verarbeitung aktivieren:
Trennzeichen ändern
Tab-getrennt (TSV):
Semikolon-getrennt:
Benutzerdefinierte Anführungszeichen
Einfache Anführungszeichen (Anführungszeichenverarbeitung muss aktiviert sein):
Zeichenkodierung
Japanische Datei (Shift_JIS):
Japanische Datei (EUC-JP):
Anwendungsbeispiele
Produktkatalog-CSV
CSV-Datei (products.csv):
Parameter:
Skript:
Filterung nach Lagerbestand:
Mitarbeiterverzeichnis-CSV
CSV-Datei (employees.csv):
Parameter:
Skript:
CSV ohne Kopfzeile
CSV-Datei (data.csv):
Parameter:
Skript:
Mehrere CSV-Dateien zusammenführen
Parameter:
Skript:
Tab-getrennte Datei (TSV)
TSV-Datei (data.tsv):
Parameter:
Skript:
Fehlerbehebung
Datei nicht gefunden
Symptom: Das Crawling wird ausgeführt, aber die Datei wird nicht verarbeitet; im Log erscheint is not found
Zu überprüfen:
Überprüfen Sie, ob der Dateipfad korrekt ist (absoluter Pfad empfohlen)
Überprüfen Sie, ob die Datei existiert
Überprüfen Sie, ob die Dateiendung
.csvoder.tsvist (Dateien mit anderen Endungen werden übersprungen)Überprüfen Sie die Leseberechtigungen der Datei
Überprüfen Sie, ob der Fess-Ausführungsbenutzer Zugriff hat
Zeichenkodierungsprobleme
Symptom: Umlaute oder Sonderzeichen werden nicht korrekt angezeigt
Lösung:
Geben Sie die richtige Zeichenkodierung an:
Zeichenkodierung der Datei ermitteln:
Spalten werden nicht korrekt erkannt
Symptom: Das Spaltentrennzeichen wird nicht korrekt erkannt, oder in Anführungszeichen eingeschlossene Felder werden aufgeteilt
Zu überprüfen:
Überprüfen Sie, ob das Trennzeichen korrekt ist:
Wenn Felder mit Anführungszeichen verarbeitet werden sollen (Felder, die Trennzeichen enthalten), aktivieren Sie die Anführungszeichenverarbeitung:
Überprüfen Sie das CSV-Dateiformat (RFC 4180-konform?)
Kopfzeilen-Behandlung
Symptom: Erste Zeile wird als Daten erkannt
Lösung:
Bei vorhandener Kopfzeile:
Ohne Kopfzeile:
Keine Daten abrufbar
Symptom: Crawling erfolgreich, aber 0 Einträge
Zu überprüfen:
Überprüfen Sie, ob die CSV-Datei nicht leer ist
Überprüfen Sie die Skript-Einstellungen (ob Spaltenname- oder
cell<N>-Referenzen ohnedata.-Präfix angegeben sind)Überprüfen Sie die Spaltennamen (bei has_header_line=true)
Überprüfen Sie die Logs auf Fehlermeldungen
Große CSV-Dateien
Symptom: Speicherüberlauf oder Timeout
Lösung:
Teilen Sie die CSV-Datei in mehrere auf
Verwenden Sie nur benötigte Spalten im Skript
Erhöhen Sie die Heap-Größe von Fess
Filtern Sie nicht benötigte Zeilen
Felder mit Zeilenumbrüchen
Im RFC 4180-Format können Felder durch Einschließen in Anführungszeichen Zeilenumbrüche enthalten. Da die Anführungszeichenverarbeitung standardmäßig deaktiviert ist, muss quote_disabled=false angegeben werden:
Parameter:
CsvListDataStore
Das Plugin fess-ds-csv enthält neben CsvDataStore auch den Handler CsvListDataStore.
CsvListDataStore erweitert CsvDataStore und bietet folgende zusätzliche Funktionen:
Multithread-Verarbeitung (gesteuert über den Parameter
numOfThreads)Automatisches Löschen verarbeiteter CSV-Dateien
Zeitstempelbasierte Dateifilterung (überspringt Dateien, die noch beschrieben werden)
Alle Parameter und Skript-Einstellungen von CsvDataStore können unverändert verwendet werden.
Grundeinstellungen
| Einstellung | Beispielwert |
|---|---|
| Handler-Name | CsvListDataStore |
Zusätzliche Parameter
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
timestamp_margin | Nein | Vergangene Zeit seit der letzten Änderungszeit der Datei in Millisekunden. Dateien, bei denen diese Zeit noch nicht verstrichen ist, werden als noch im Schreibvorgang befindlich betrachtet und übersprungen (Standard: 10000) |
numOfThreads | Nein | Anzahl der Verarbeitungs-Threads (Standard: 1) |
Bemerkung
CsvListDataStore löscht CSV-Dateien nach der Verarbeitung automatisch. Tritt während der Verarbeitung ein Fehler auf, wird die Datei in .txt umbenannt (schlägt die Umbenennung fehl, wird die Datei gelöscht).
Erweiterte Skript-Beispiele
Datenverarbeitung
Bedingte Indizierung
Mehrere Spalten kombinieren
Datumsformatierung
Weiterführende Informationen
Übersicht der Datenspeicher-Konnektoren - Übersicht der Datenspeicher-Konnektoren
JSON-Konnektor - JSON-Konnektor
Datenbank-Konnektor - Datenbank-Konnektor
Datenspeicher-Crawl - Leitfaden zur Datenspeicher-Konfiguration