Wie man java-Volltextsuche mit GroupDocs.Search implementiert

Im Zeitalter datengetriebener Anwendungen ist java full text search unverzichtbar, um massive Dokumentensammlungen in sofort durchsuchbare Wissensbasen zu verwandeln. Egal, ob Sie ein Unternehmens‑Portal oder ein leichtgewichtiges Desktop‑Utility bauen, ein gut konfiguriertes Suchnetzwerk kann die Abfrage‑Latenz von Sekunden auf Millisekunden reduzieren und die Ergebnisse relevant halten, während die Datenmenge wächst. Dieses Tutorial führt Sie durch die Bereitstellung von GroupDocs.Search for Java, das Hinzufügen von Dateien zur Suche, das Konfigurieren von Verzeichnissen auf Knoten und das Aktivieren von Echtzeit‑Indexierung, sodass Ihr Index ohne manuelle Eingriffe frisch bleibt.

Warum das wichtig ist: Ein java full text search‑Index reduziert die Abfrage‑Latenz, skaliert mit dem Datenvolumen und bringt leistungsstarke Volltext‑Funktionen in jede Java‑basierte Lösung – Webportale, Desktop‑Apps oder Cloud‑Microservices.

Schnelle Antworten

  • What is the primary purpose of GroupDocs.Search? Es bietet eine skalierbare, java‑Suchmaschine, die Dokumente in einem verteilten Netzwerk indexiert und durchsucht.
  • Which version should I use? Die neueste stabile Version (z. B. 25.4) wird für neue Projekte empfohlen.
  • Do I need a license? Eine 30‑tägige kostenlose Testversion ist verfügbar; für den Produktionseinsatz ist eine permanente Lizenz erforderlich.
  • Can I add both files and whole directories? Ja – verwenden Sie die Hilfsfunktionen addFiles und addDirectories, um Inhalte zu ingestieren.
  • What Java version is required? Java 8 oder höher, mit Maven für das Abhängigkeitsmanagement.
  • How does real time indexing java work? Durch das Abonnieren von Knoten‑Events können Sie eine automatische Neu‑Indexierung auslösen, wenn sich Dateien ändern.

Was bedeutet „create searchable index java“?

Ein durchsuchbarer Index in Java zu erstellen bedeutet, eine Datenstruktur zu bauen, die Begriffe den Dokumenten zuordnet, die sie enthalten, und schnelle Volltext‑Abfragen ermöglicht. GroupDocs.Search for Java übernimmt die schwere Arbeit, sodass Sie sich darauf konzentrieren können, Dokumente zuzuführen und das Suchverhalten zu optimieren.

Warum GroupDocs.Search für Java verwenden?

GroupDocs.Search liefert eine java‑Suchmaschine, die horizontal skaliert, über 50 Eingabe‑ und Ausgabeformate unterstützt und eine ereignisgesteuerte Indexierung bietet. Das Bereitstellen mehrerer Knoten verteilt die Indexierungslast, während integrierte Gesundheitsprüfungen das Netzwerk zuverlässig halten. Außerdem stellt es RESTful‑APIs und anpassbare Analyzer für fein abgestimmte Relevanz bereit.

Voraussetzungen

  • JDK 8+ auf Ihrer Entwicklungsmaschine installiert.
  • Eine IDE wie IntelliJ IDEA oder Eclipse.
  • Grundkenntnisse in Java und Maven.
  • Zugriff auf die GroupDocs.Search for Java‑Bibliothek (Download oder Maven).

Einrichtung von GroupDocs.Search für Java

Maven‑Abhängigkeit

Fügen Sie das Repository und die Abhängigkeit zu Ihrer pom.xml hinzu:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/search/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-search</artifactId>
      <version>25.4</version>
   </dependency>
</dependencies>

Pro Tipp: Halten Sie die Versionsnummer aktuell, indem Sie die offizielle Release‑Seite prüfen.

Sie können das JAR auch direkt von der offiziellen Seite herunterladen: GroupDocs.Search for Java releases.

Lizenzbeschaffung

  • Free trial: 30‑tägige Evaluierung.
  • Temporary license: Antrag für erweitertes Testen.
  • Purchase: Für Produktionseinsätze erforderlich.

Grundlegende Initialisierung

Erstellen Sie ein Konfigurationsobjekt, das auf einen Ordner verweist, in dem Indexdateien gespeichert werden, und den Basis‑Kommunikationsport definiert:

import com.groupdocs.search.Configuration;

class InitializeSearch {
    public static void main(String[] args) {
        String basePath = "your/base/path";
        int basePort = 8080;
        
        Configuration config = new ConfiguringSearchNetwork().configure(basePath, basePort);
        // Use this configuration for subsequent operations
    }
}

Wie man mit GroupDocs.Search einen searchable index java erstellt?

Laden Sie ein SearchConfiguration‑Objekt, starten Sie einen SearchNetworkNode und rufen Sie node.getIndexer().addFiles(...) auf, um den Index zu füllen. Dieses Ein‑Zeilen‑Muster startet ein voll funktionsfähiges java‑Volltextsuche‑Netzwerk, das sofort Abfragen entgegennehmen kann. Sie können dann skalieren, indem Sie weitere Knoten hinzufügen, die denselben Basis‑Pfad und Port‑Bereich teilen.

Feature 1 – Konfiguration und Netzwerk‑Setup

Die Klasse SearchConfiguration enthält alle Einstellungen, die zum Starten eines Knotens erforderlich sind.

import com.groupdocs.search.Configuration;
import com.groupdocs.search.scaling.*;

class ConfiguringSearchNetwork {
    public static Configuration configure(String basePath, int basePort) {
        // Configure the search network with specified base path and port
        return new Configuration(basePath, basePort);
    }
}
  • basePath – Verzeichnis, in dem die Indexdaten gespeichert werden.
  • basePort – Startport; jeder Knoten erhöht diesen Wert.

Feature 2 – Bereitstellung von Suchnetzwerk‑Knoten

SearchNetworkNode repräsentiert einen einzelnen Indexierungsdienst, der auf jeder Maschine laufen kann.

import com.groupdocs.search.scaling.*;

class SearchNetworkDeployment {
    public static SearchNetworkNode[] deploy(String basePath, int basePort, Configuration configuration) {
        // Deploy nodes based on the provided configuration
        return new SearchNetworkNode[]{new SearchNetworkNode()};
    }
}

SearchNetworkNode ist die Kern‑Laufzeitkomponente, die einen Index hostet, Add/Remove‑Events verarbeitet und auf Suchabfragen reagiert. Das Bereitstellen mehrerer Knoten ermöglicht es Ihnen, java full text search‑Cluster zu erstellen, die horizontal skalieren.

Feature 3 – Abonnieren von Knoten‑Events

Echtzeit‑Updates halten den Index synchron mit Änderungen im Dateisystem.

import com.groupdocs.search.scaling.*;

class SearchNetworkNodeEvents {
    public static void subscribe(SearchNetworkNode node) {
        // Logic to subscribe to the specified node's events
    }
}

Durch das Abhören von Events können Sie automatisch eine Neu‑Indexierung auslösen, wenn neue Dateien eintreffen, und so ereignisgesteuerte Indexierung ohne manuelle Skripte erreichen.

Feature 4 – Hinzufügen von Verzeichnissen zum Netzwerk‑Knoten

Verwenden Sie diesen Helfer, um Verzeichnisse zum Knoten hinzuzufügen, und sammeln Sie rekursiv alle unterstützten Dokumente.

import java.io.File;
import java.util.ArrayList;

class DirectoryAdder {
    public static void addDirectories(SearchNetworkNode node, String... directoryPaths) {
        ArrayList<String> files = new ArrayList<>();
        for (String directoryPath : directoryPaths) {
            final File folder = new File(directoryPath);
            listFiles(folder, files);
        }
        addFiles(node, files.toArray(new String[0]));
    }

    private static void listFiles(final File folder, ArrayList<String> list) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFiles(fileEntry, list);
            } else {
                list.add(fileEntry.getPath());
            }
        }
    }
}

Feature 5 – Hinzufügen von Dateien zum Netzwerk‑Knoten

Wenn Sie feinkörnige Kontrolle benötigen, fügen Sie Dateien zur Suche einzeln hinzu:

import com.groupdocs.search.Document;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import org.apache.commons.io.FilenameUtils;
import com.groupdocs.search.Indexer;
import com.groupdocs.search.options.*;

class FileAdder {
    public static void addFiles(SearchNetworkNode node, String... filePaths) {
        try {
            InputStream[] streams = new FileInputStream[filePaths.length];
            Document[] documents = new Document[filePaths.length];
            for (int i = 0; i < filePaths.length; i++) {
                String filePath = filePaths[i];
                InputStream stream = new FileInputStream(filePath);
                streams[i] = stream;
                
                // Create a document from the input stream
                String fileName = FilenameUtils.getName(filePath);
                String extension = "." + FilenameUtils.getExtension(filePath);
                Document document = Document.createFromStream(
                    fileName,
                    new Date(),
                    extension,
                    stream);
                documents[i] = document;
            }

            // Initialize the indexer and configure options
            Indexer indexer = node.getIndexer();
            IndexingOptions options = new IndexingOptions();
            options.setUseRawTextExtraction(false);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Häufige Anwendungsfälle

  • Enterprise document portals die eine sofortige Suche über Tausende von PDFs und Office‑Dateien benötigen.
  • Legal e‑discovery platforms bei denen ständig neue Beweismittel hinzugefügt werden und in Echtzeit durchsuchbar sein müssen.
  • Content management systems die Bilder, Präsentationen und Tabellen speichern und eine Volltext‑Suche benötigen.

Häufige Probleme & Lösungen

ProblemGrundLösung
Keine Dokumente erscheinen in den SuchergebnissenIndex nicht committetRufen Sie node.getIndexer().commit() nach dem Hinzufügen von Dateien auf.
Port-Konflikt-FehlerEin anderer Dienst verwendet basePortWählen Sie einen anderen basePort oder prüfen Sie freie Ports.
Nicht unterstütztes DateiformatBibliothek fehlt ein ParserStellen Sie sicher, dass die Dateierweiterung unterstützt wird, oder fügen Sie einen benutzerdefinierten Extraktor hinzu.

Tipps zur Fehlersuche

  • Verify node health: Verwenden Sie den integrierten Health‑Check‑Endpunkt (http://localhost:{port}/health), um zu bestätigen, dass jeder Knoten läuft.
  • Monitor memory usage: Große Stapel von Dokumenten können den Speicherverbrauch erhöhen; indexieren Sie in kleineren Chargen und rufen Sie regelmäßig commit() auf.
  • Check logs: GroupDocs.Search schreibt detaillierte Protokolle in den basePath‑Ordner – prüfen Sie diese auf Parsing‑Fehler oder Netzwerk‑Timeouts.

Häufig gestellte Fragen

F: Kann ich GroupDocs.Search in einer cloud‑basierten Java‑Anwendung verwenden?
A: Ja. Die Bibliothek funktioniert mit jeder Java‑Runtime, und Sie können basePath auf einen netzwerkgemounteten Ordner oder ein Cloud‑Speichermount zeigen.

F: Wie aktualisiere ich den Index, wenn sich eine Datei ändert?
A: Abonnieren Sie Knoten‑Events (siehe Feature 3) und rufen Sie addFiles oder addDirectories erneut für die geänderten Pfade auf.

F: Gibt es ein Limit für die Anzahl der Knoten, die ich bereitstellen kann?
A: Praktisch wird das Limit durch Ihre Hardware und Netzwerkbandbreite definiert. Die API setzt keine feste Obergrenze.

F: Muss ich Knoten nach dem Hinzufügen neuer Dateien neu starten?
A: Nein. Das Hinzufügen von Dateien löst die Indexierung automatisch aus; Sie müssen nur committen, wenn Sie den Vorgang verzögern.

F: Welche Dokumentformate werden standardmäßig unterstützt?
A: PDFs, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML und viele Bildtypen – insgesamt über 50 Formate.

F: Wie kann ich Echtzeit‑Indexierung für einen Ordner aktivieren, der kontinuierlich Uploads erhält?
A: Implementieren Sie einen Dateisystem‑Watcher (z. B. java.nio.file.WatchService), der DirectoryAdder.addDirectories(node, path) aufruft, sobald eine neue Datei erkannt wird.


Zuletzt aktualisiert: 2026-09-27
Getestet mit: GroupDocs.Search for Java 25.4
Autor: GroupDocs

Verwandte Tutorials