Suche nach Attribut Java mit GroupDocs.Search Anleitung
In modernen, dokumentzentrierten Anwendungen müssen Sie Dateien häufig nicht nur nach ihrem Textinhalt, sondern auch nach benutzerdefinierten Metadaten wie Abteilung, Vertraulichkeitsstufe oder Erstellungsdatum finden. Search by attribute java bietet diese Fähigkeit in einer einzigen, hochperformanten Abfrage. In diesem Tutorial sehen Sie, wie Sie Attribute bereits indizierter Dateien batch‑weise aktualisieren, Attribute beim Indexieren einfügen und Dokumente effizient nach Metadaten mit der GroupDocs.Search‑Bibliothek für Java abfragen.
Schnelle Antworten
- Was ist “search by attribute java”? Es ermöglicht das Filtern von Suchergebnissen mit Schlüssel‑Wert‑Metadaten, die jedem indizierten Dokument zugeordnet sind.
- Kann ich Attribute nach dem Indexieren ändern? Ja – verwenden Sie
AttributeChangeBatch, um Massenänderungen anzuwenden, ohne den gesamten Index neu aufzubauen. - Wie füge ich Attribute beim Indexieren hinzu? Registrieren Sie einen Handler für das
FileIndexing‑Ereignis und setzen Sie Attribute programmgesteuert für jede Datei. - Brauche ich eine Lizenz? Eine kostenlose Testversion ist für die Evaluierung geeignet; für den Produktionseinsatz ist eine permanente Lizenz erforderlich.
- Welche Java‑Version wird benötigt? Java 8 oder höher wird empfohlen.
Was ist “search by attribute java”?
Search by attribute java ermöglicht es Ihnen, Dokumente anhand benutzerdefinierter Metadaten (Attribute) statt nur ihres Textinhalts abzufragen. Dieser Ansatz verkleinert Ergebnislisten drastisch, reduziert Netzwerkverkehr und beschleunigt die Antwortzeiten, weil die Engine Attribut‑Filter auswertet, bevor ein Volltext‑Scan durchgeführt wird.
Warum dynamisches Metadaten‑Tagging verwenden?
Dynamisches Metadaten‑Tagging lässt Sie benutzerdefinierte Attribute für Dokumente zuweisen, aktualisieren und verwalten, ohne neu zu indexieren. Es bietet flexible Klassifizierung, die sich an wechselnde Geschäftsregeln anpasst, verbessert die Sucheffizienz und reduziert teure Datenmigrationen in großen Repositorien, während Compliance und Auditierbarkeit erhalten bleiben.
- Dynamische Kategorisierung – Metadaten mit sich entwickelnden Geschäftsregeln synchron halten.
- Schnelleres Filtern – Attribut‑Filter werden vor der Volltextsuche ausgewertet, was die Antwortzeiten erhöht.
- Compliance‑Tracking – Dokumente für Aufbewahrungsrichtlinien oder Audit‑Anforderungen taggen.
- Batch‑Update von Attributen – Viele Dokumente in einem Vorgang ändern, ohne alles neu zu indexieren.
Voraussetzungen
- Java 8+ (JDK 8 oder neuer)
- GroupDocs.Search for Java Bibliothek (siehe Maven‑Einrichtung unten)
- Grundlegende Kenntnisse von Java‑Collections und Ausnahmebehandlung
Einrichtung von GroupDocs.Search für Java
Maven‑Einrichtung
Fügen Sie das GroupDocs‑Repository und die Abhängigkeit zu Ihrer pom.xml hinzu:
<repositories>
<repository>
<id>groupdocs-releases</id>
<url>https://repo.groupdocs.com/maven</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
Direkter Download
Alternativ laden Sie die neueste Version von den GroupDocs.Search for Java releases herunter. Wenn Sie Maven nicht verwenden möchten, holen Sie sich das JAR von der GroupDocs‑Website.
Lizenzbeschaffung
- Beginnen Sie mit einer kostenlosen Testversion, um die Funktionen zu erkunden.
- Für den erweiterten Einsatz erhalten Sie eine temporäre oder vollständige Lizenz über die license page.
Grundlegende Initialisierung
// Initialize the search index folder
String indexFolder = "C:/search_index";
Index index = new Index(indexFolder);
// Apply license if you have one
License license = new License();
license.setLicense("C:/licenses/groupdocs.lic");
Wie man Dokumentattribute ändert (Batch‑Update)
Um Dokumentattribute nach dem Indexieren zu ändern, können Sie die AttributeChangeBatch‑API verwenden, um Massen‑Updates anzuwenden. Dieser Ansatz aktualisiert die Metadaten ausgewählter Dateien in einer einzigen Transaktion, vermeidet den Aufwand einer Neu‑Indexierung der gesamten Sammlung und lässt den Volltext‑Index unverändert.
Direkte Antwort: Verwenden Sie AttributeChangeBatch, um Hinzufügungen, Löschungen oder Ersetzungen von Metadaten zu einer einzigen atomaren Operation zu gruppieren und dann den Batch in den Index zu committen. Dadurch werden die Attribute vieler Dokumente in einem Durchlauf aktualisiert, während der bestehende Volltext‑Index erhalten bleibt.
Schritt 1: Dokumente zum Index hinzufügen
index.add("C:/docs/contract1.pdf");
index.add("C:/docs/report2.docx");
Schritt 2: Indexierte Dokumentinformationen abrufen
DocumentInfo info = index.getDocumentInfo("contract1.pdf");
System.out.println("Current attributes: " + info.getAttributes());
Schritt 3: Batch‑Update von Dokumentattributen
Die Klasse AttributeChangeBatch fasst mehrere Attributänderungen zu einer einzigen atomaren Operation zusammen, reduziert I/O‑Overhead und gewährleistet Indexkonsistenz.
AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addAttribute("contract1.pdf", "department", "Legal");
batch.removeAttribute("report2.docx", "confidential");
batch.replaceAttribute("report2.docx", "status", "archived", "active");
index.applyAttributeChanges(batch);
Schritt 4: Suche mit Attribut‑Filtern
SearchOptions options = new SearchOptions();
options.addAttributeFilter("department", "Legal");
SearchResult result = index.search("agreement", options);
System.out.println("Found " + result.getCount() + " legal documents.");
Wie man Attribute beim Indexieren hinzufügt
Das Hinzufügen von Attributen während des Indexierungsprozesses stellt sicher, dass jedes Dokument von Anfang an mit den erforderlichen Metadaten angereichert wird. Durch das Handling des FileIndexing‑Ereignisses können Sie programmgesteuert Schlüssel‑Wert‑Paare an jedes DocumentInfo‑Objekt anhängen, bevor die Engine die Datei verarbeitet, und so eine konsistente Attributverfügbarkeit für nachfolgende Suchen garantieren.
Direkte Antwort: Abonnieren Sie das FileIndexing‑Ereignis, bevor Sie Dateien hinzufügen; im Ereignishandler rufen Sie addAttribute am DocumentInfo‑Objekt auf, um Schlüssel‑Wert‑Paare anzuhängen, und lassen dann den Index die Datei weiter verarbeiten.
Schritt 1: Das FileIndexing‑Ereignis abonnieren
Das FileIndexing‑Ereignis wird für jede Datei ausgelöst, wenn sie dem Index hinzugefügt wird, und ermöglicht das Einfügen benutzerdefinierter Metadaten.
index.getEvents().FileIndexing.add(event -> {
// Example: set department based on folder name
String folder = new File(event.getFilePath()).getParentFile().getName();
event.getDocumentInfo().addAttribute("department", folder);
});
Schritt 2: Dokumente indexieren
index.add("C:/incoming/hr/policy.pdf");
index.add("C:/incoming/finance/budget.xlsx");
Praktische Anwendungsfälle
- Dokumentenmanagement‑Systeme – Dateien beim Import automatisch taggen, um sofortige Facetten‑Navigation zu ermöglichen.
- Große Inhaltsarchive – Attribut‑Filter mit Volltextsuche kombinieren, um die Abfragezeit von Minuten auf Sekunden bei Multi‑Gigabyte‑Sammlungen zu reduzieren.
- Compliance & Reporting – Dynamisch Aufbewahrungsfristen, Vertraulichkeitsstufen oder Audit‑Flags zuweisen, die für regulatorische Prüfungen abgefragt werden können.
Leistungsüberlegungen
- Speichermanagement – JVM‑Heap überwachen und
-Xmxanpassen (z. B.-Xmx4gfür Indizes > 2 GB). - Batch‑Verarbeitung – Attributänderungen mit
AttributeChangeBatchgruppieren, um Festplatten‑Writes zu minimieren; Batches > 10 000 Änderungen in kleinere Teile aufteilen, um Transaktions‑Timeouts zu vermeiden. - Bibliotheks‑Updates – Auf die neueste GroupDocs.Search‑Version bleiben; Version 25.4 bringt eine 30 %ige Geschwindigkeitssteigerung bei der Attribut‑Filter‑Auswertung gegenüber 24.x.
Häufige Probleme und Lösungen
| Problem | Warum es passiert | Wie zu beheben |
|---|---|---|
| Attribute werden nicht angewendet | Ereignis‑Handler nicht vor dem Indexieren registriert | Stellen Sie sicher, dass index.getEvents().FileIndexing.add(...) vor allen index.add(...)‑Aufrufen ausgeführt wird. |
| Suche liefert keine Ergebnisse | Attributname stimmt nicht überein (Groß‑/Kleinschreibung) | Verwenden Sie exakt die Attributnamen beim Erstellen von Filtern (createAttribute("main")). |
| Out‑of‑memory‑Fehler bei großen Batches | Zu viele Änderungen in einem einzigen Batch | Große Updates in kleinere AttributeChangeBatch‑Instanzen aufteilen (z. B. 5 000 Dokumente pro Batch). |
| Lizenz wird nicht erkannt | Test‑JAR ohne Anwendung der Lizenzdatei verwendet | Rufen Sie License license = new License(); license.setLicense("path/to/license.file"); vor irgendeiner Index‑Operation auf. |
Häufig gestellte Fragen
F: Was sind die Voraussetzungen für die Verwendung von GroupDocs.Search in Java?
A: Java 8+, die GroupDocs.Search‑Bibliothek und Grundkenntnisse zu Indexierungskonzepten.
F: Wie installiere ich GroupDocs.Search via Maven?
A: Fügen Sie das Repository und die Abhängigkeit, wie im Abschnitt Maven‑Einrichtung gezeigt, zu Ihrer pom.xml hinzu.
F: Kann ich Attribute nach dem Indexieren von Dokumenten ändern?
A: Ja, verwenden Sie AttributeChangeBatch, um Dokumentattribute batch‑weise zu aktualisieren, ohne neu zu indexieren.
F: Was tun, wenn mein Indexierungsprozess langsam ist?
A: Optimieren Sie den JVM‑Speicher (-Xmx), nutzen Sie Batch‑Updates und aktualisieren Sie auf die neueste Bibliotheksversion für Performance‑Patches.
F: Wo finde ich weitere Ressourcen zu GroupDocs.Search für Java?
A: Besuchen Sie die offizielle Dokumentation oder die Community‑Foren.
Ressourcen
- Dokumentation: GroupDocs.Search für Java Docs
- API‑Referenz: API Reference
- Download: Neueste Releases
- GitHub: GitHub GroupDocs.Search
- Kostenloses Support‑Forum: GroupDocs Forums
- Temporäre Lizenz: License Page
Zuletzt aktualisiert: 2026-09-21
Getestet mit: GroupDocs.Search 25.4 für Java
Autor: GroupDocs
<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>
import com.groupdocs.search.Index;
// Initialize an index in a specified directory
Index index = new Index("YOUR_OUTPUT_DIRECTORY/ChangeAttributes");
index.add("YOUR_DOCUMENT_DIRECTORY");
import com.groupdocs.search.results.DocumentInfo;
DocumentInfo[] documents = index.getIndexedDocuments();
import com.groupdocs.search.common.AttributeChangeBatch;
import com.groupdocs.search.SearchOptions;
AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addToAll("public"); // Add 'public' to all documents
batch.remove(documents[0].getFilePath(), "public"); // Remove 'public' from a specific document
batch.add(documents[0].getFilePath(), "main", "key"); // Add 'main' and 'key' attributes
// Apply changes
index.changeAttributes(batch);
import com.groupdocs.search.results.SearchResult;
SearchOptions options = new SearchOptions();
options.setSearchDocumentFilter(SearchDocumentFilter.createAttribute("main"));
String query = "length";
SearchResult result = index.search(query, options); // Perform the search
import com.groupdocs.search.events.EventHandler;
import com.groupdocs.search.events.FileIndexingEventArgs;
index.getEvents().FileIndexing.add(new EventHandler<FileIndexingEventArgs>() {
@Override
public void invoke(Object sender, FileIndexingEventArgs args) {
if (args.getDocumentFullPath().endsWith("SampleDocument.pdf")) {
args.setAttributes(new String[] { "main", "key" });
}
}
});
index.add("YOUR_DOCUMENT_DIRECTORY");