Einführung
Je mehr Dateiserver die einzelnen Abteilungen aufstellen, desto weniger weiß irgendjemand noch, wo ein bestimmtes Dokument liegt. Die Windows-Suche arbeitet immer nur in einem freigegebenen Ordner und reicht nicht über Servergrenzen hinweg, und die Volltextsuche eines NAS endet an dessen Gehäuse.
Ein Ausweg ist ein eigener Volltextsuchserver vor den Dateiservern. Diese Seite sammelt, was vor dem Einsatz von Fess, einem quelloffenen Volltextsuchserver, an dieser Stelle zu prüfen ist.
Für wen diese Seite gedacht ist
Alle, die mit der Suche auf einem internen Dateiserver oder NAS zu kämpfen haben
Alle, die Volltextsuche prüfen und wissen möchten, ob Open Source dafür ausreicht
Alle, die Suche einführen wollen, ohne bestehende Zugriffsrechte anzutasten
Fess steht unter der Apache License 2.0 und verursacht keine Lizenzkosten.
Wo die Dateien liegen dürfen
Der Datei-Crawler von Fess beherrscht die folgenden Protokolle. Eingerichtet werden sie in der Verwaltungsoberfläche unter [Crawler] > [Dateisystem] als Start-URL des Crawls.
Welche Protokolle aktiv sind, steht in crawler.file.protocols; der Standardwert ist file,smb,smb1,ftp,s3,gcs.
Für Windows-Dateifreigaben ist normalerweise smb die richtige Wahl. smb1 bleibt für alte NAS-Geräte und Druckserver erhalten, die nichts anderes können; SMB1 ist in Windows aus Sicherheitsgründen standardmäßig deaktiviert und daher für eine neue Installation keine Option.
Bestehende Zugriffsrechte bleiben erhalten
Die größte Sorge bei einer Suche über einen Dateiserver ist, dass Dokumente in den Treffern auftauchen, die jemand nicht sehen darf. Erscheinen die Ordner von Personal und Buchhaltung bei allen, ist das Suchsystem unbrauchbar, wie gut das Ranking auch sein mag.
Fess löst das, indem es die Zugriffsrechte des Dateiservers selbst in die Suche übernimmt.
Funktionsweise
Beim Crawlen liest Fess die ACL jeder Datei
Die erlaubten und die verweigerten Konten und Gruppen werden als Rollen des Dokuments gespeichert
Bei der Suche werden diese Rollen mit denen des angemeldeten Benutzers abgeglichen, und nur zulässige Dokumente kommen zurück
Sowohl Erlauben als auch Verweigern wird behandelt, intern unterschieden durch die Präfixe (allow) und (deny). Das Auslesen der Rollen aus der ACL ist standardmäßig aktiv.
Die Voraussetzung, die zuerst zu klären ist
Damit das durchgängig funktioniert, muss die suchende Person dieselben Rollen tragen. Im Dokument steht „diese Gruppe darf mich lesen“; solange der suchende Benutzer Fess nicht mitteilen kann, in welchen Gruppen er ist, gibt es nichts abzugleichen.
Damit ist die Anbindung an Active Directory oder LDAP eine Voraussetzung für eine rechtebewusste Suche: Fess meldet Benutzer an demselben Verzeichnis an, an dem sie auch der Dateiserver authentifiziert.
Werden dagegen nur freigegebene Ordner indiziert, die im Unternehmen ohnehin alle lesen dürfen, ist die Anbindung nicht nötig. An dieser Unterscheidung entscheidet sich meist der Umfang einer ersten Einführung.
Welche Dateiformate gelesen werden
Fess gewinnt den Text mit Apache Tika aus dem Dateiinhalt, sodass nicht nur der Name, sondern der Inhalt durchsuchbar ist. Genau das findet ein Dokument, an dessen Titel sich niemand mehr erinnert.
Die wichtigsten Formate sind:
MS Office (doc, xls, ppt, docx, xlsx, pptx und weitere)
PDF
Reiner Text, HTML, XML
Rich Text (rtf)
Quelltext (js, c, h, java und weitere)
Archive (gz, tar, zip und weitere; der Inhalt wird entpackt und mit indiziert)
Die vollständige Liste steht unter Durchsuchbare Dateien.
Dateien ganz ohne Text, etwa gescannte Dokumente und reine Bild-PDFs, lassen sich auf diesem Weg nicht lesen. Ob OCR nötig wird, klärt man am besten vorab an den tatsächlichen Inhalten der Zielordner.
Dimensionierung und Aufbau
Fess legt seinen Index in OpenSearch ab. Kleine Installationen laufen problemlos mit Fess und OpenSearch auf demselben Rechner; wächst der Bestand, lässt sich OpenSearch als Cluster herauslösen.
Für die Dimensionierung ist die reine Dateizahl ein schlechter Anhaltspunkt. Diese drei Punkte wiegen schwerer:
Die Gesamtgröße der Zielordner und welcher Anteil davon überhaupt Text enthält
Wie oft sich Inhalte ändern, täglich oder monatlich, denn das bestimmt den Crawl-Zeitplan
Die Größe einzelner Dateien, da sehr große Dateien per Konfiguration vom Crawl ausgenommen werden können
Erste Schritte
Zuerst laufen lassen — der Schnellstart-Anleitung folgen. Mit Docker Compose ist in wenigen Minuten etwas Durchsuchbares da
Crawl-Konfiguration anlegen — Ziel-URL und Crawl-Intervall unter [Crawler] > [Dateisystem] eintragen
Zugangsdaten hinterlegen — das Konto für die Freigabe unter [Crawler] > [Dateiauthentifizierung] eintragen
Rollen und Labels entwerfen — Labels für die Filterung nach Abteilung, Rollen für rechteabhängige Treffer
Ein durchgearbeitetes Beispiel steht in Teil 4 Verstreute Dateien zentral durchsuchen, das ein einziges Suchfeld über mehrere Dateiserver und eine Intranet-Seite aufbaut.
Zusammenfassung
Fess ist ein quelloffener Suchserver, der Dateiserver über SMB/CIFS, FTP, lokale Pfade, S3 und GCS indizieren kann
Bei über SMB gecrawlten Dateien filtern die in der ACL hinterlegten Zugriffsrechte die Treffer, und zwar standardmäßig
Rechtebewusste Suche setzt die Anbindung an Active Directory oder LDAP voraus
Apache Tika macht den Inhalt von Office-Dokumenten und PDFs durchsuchbar
Klein anfangen und durch Auslagerung von OpenSearch in ein Cluster wachsen