Zoeken op attribuut java met GroupDocs.Search gids
In moderne document‑centrische applicaties moet je vaak bestanden vinden niet alleen op basis van hun tekstinhoud, maar ook op aangepaste metadata zoals afdeling, vertrouwelijkheidsniveau of aanmaakdatum. Search by attribute java biedt die mogelijkheid in één enkele, hoog‑presterende query. In deze tutorial zie je hoe je attributen in batch kunt bijwerken op al geïndexeerde bestanden, attributen kunt injecteren tijdens het indexeren, en efficiënt documenten kunt doorzoeken op metadata met de GroupDocs.Search for Java‑bibliotheek.
Snelle antwoorden
- Wat is “search by attribute java”? Het stelt je in staat om zoekresultaten te filteren met sleutel‑waarde‑metadata die aan elk geïndexeerd document is gekoppeld.
- Kan ik attributen wijzigen na het indexeren? Ja – gebruik
AttributeChangeBatchom bulk‑wijzigingen toe te passen zonder de volledige index opnieuw op te bouwen. - Hoe voeg ik attributen toe tijdens het indexeren? Registreer een handler voor het
FileIndexing‑event en stel attributen programmatisch in voor elk bestand. - Heb ik een licentie nodig? Een gratis proefversie werkt voor evaluatie; een permanente licentie is vereist voor productie‑implementaties.
- Welke Java‑versie is vereist? Java 8 of hoger wordt aanbevolen.
Wat is “search by attribute java”?
Search by attribute java maakt het mogelijk om documenten te doorzoeken op basis van aangepaste metadata (attributen) in plaats van alleen hun tekstuele inhoud. Deze aanpak verkleint de resultaatsverzamelingen drastisch, vermindert netwerkverkeer en versnelt de responstijden omdat de engine attribuutfilters evalueert vóór het uitvoeren van een full‑text scan.
Waarom dynamische metadata-tagging gebruiken?
Dynamische metadata‑tagging stelt je in staat om aangepaste attributen voor documenten toe te wijzen, bij te werken en te beheren zonder opnieuw te indexeren, waardoor flexibele classificatie ontstaat die zich aanpast aan veranderende bedrijfsregels, de zoek efficiëntie verbetert en de noodzaak voor kostbare datamigraties over grote repositories vermindert, terwijl naleving en auditbaarheid behouden blijven.
- Dynamische categorisatie – houd metadata synchroon met evoluerende bedrijfsregels.
- Snellere filtering – attribuutfilters worden geëvalueerd vóór full‑text zoeken, wat de responstijden verhoogt.
- Compliance‑tracking – tag documenten voor retentie‑beleid of audit‑vereisten.
- Batch‑update van attributen – wijzig veel documenten in één bewerking zonder alles opnieuw te indexeren.
Vereisten
- Java 8+ (JDK 8 of nieuwer)
- GroupDocs.Search for Java bibliotheek (zie Maven‑configuratie hieronder)
- Basiskennis van Java‑collecties en exception‑handling
GroupDocs.Search voor Java instellen
Maven-configuratie
Voeg de GroupDocs‑repository en afhankelijkheid toe aan je pom.xml:
<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>
Directe download
Of download de nieuwste versie van GroupDocs.Search for Java releases. Als je liever geen Maven gebruikt, haal dan de JAR van de GroupDocs‑website.
Licentie verkrijgen
- Begin met een gratis proefversie om de mogelijkheden te verkennen.
- Voor langdurig gebruik, verkrijg een tijdelijke of volledige licentie via de licentiepagina.
Basisinitialisatie
// 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");
Hoe documentattributen te wijzigen (batch‑update)
Om documentattributen te wijzigen nadat ze zijn geïndexeerd, kun je de AttributeChangeBatch‑API gebruiken om bulk‑updates toe te passen. Deze aanpak werkt de metadata van geselecteerde bestanden bij in één transactie, waardoor de overhead van het opnieuw indexeren van de volledige collectie wordt vermeden en de full‑text index intact blijft.
Direct antwoord: Gebruik AttributeChangeBatch om toevoegingen, verwijderingen of vervangingen van metadata te groeperen in één atomare bewerking, en commit vervolgens de batch naar de index. Dit werkt de attributen van vele documenten in één keer bij terwijl de bestaande full‑text index behouden blijft.
Stap 1: documenten aan de index toevoegen
index.add("C:/docs/contract1.pdf");
index.add("C:/docs/report2.docx");
Stap 2: opgehaalde indexeerde documentinformatie
DocumentInfo info = index.getDocumentInfo("contract1.pdf");
System.out.println("Current attributes: " + info.getAttributes());
Stap 3: batch‑update van documentattributen
De AttributeChangeBatch‑klasse groepeert meerdere attribuutwijzigingen in één atomare bewerking, waardoor I/O‑overhead wordt verminderd en indexconsistentie wordt gegarandeerd.
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);
Stap 4: zoeken met attribuutfilters
SearchOptions options = new SearchOptions();
options.addAttributeFilter("department", "Legal");
SearchResult result = index.search("agreement", options);
System.out.println("Found " + result.getCount() + " legal documents.");
Hoe attributen toe te voegen tijdens het indexeren
Het toevoegen van attributen tijdens het indexeerproces zorgt ervoor dat elk document vanaf het begin wordt verrijkt met de benodigde metadata. Door het FileIndexing‑event af te handelen, kun je programmatisch sleutel‑waarde‑paren aan elk DocumentInfo‑object koppelen voordat de engine het bestand verwerkt, waardoor consistente beschikbaarheid van attributen voor latere zoekopdrachten wordt gegarandeerd.
Direct antwoord: Abonneer je op het FileIndexing‑event voordat je bestanden toevoegt; roep in de event‑handler addAttribute aan op het DocumentInfo‑object om sleutel‑waarde‑paren toe te voegen, en laat vervolgens de index het bestand blijven verwerken.
Stap 1: abonneren op het FileIndexing‑event
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);
});
Stap 2: documenten indexeren
index.add("C:/incoming/hr/policy.pdf");
index.add("C:/incoming/finance/budget.xlsx");
Praktische toepassingen
- Documentbeheersystemen – tag bestanden automatisch bij ingestie, waardoor directe facet‑navigatie mogelijk is.
- Grote content‑archieven – combineer attribuutfilters met full‑text zoeken om de zoektijd van minuten naar seconden te verkorten bij multi‑gigabyte collecties.
- Compliance & rapportage – wijs dynamisch retentieperioden, vertrouwelijkheidsniveaus of audit‑vlaggen toe die kunnen worden doorzocht voor regelgevende controles.
Prestatie‑overwegingen
- Geheugenbeheer – monitor de JVM‑heap en stel
-Xmxaf (bijv.-Xmx4gvoor indexen groter dan 2 GB). - Batch‑verwerking – groepeer attribuutwijzigingen met
AttributeChangeBatchom schijf‑writes te minimaliseren; splits batches groter dan 10 000 wijzigingen om transactietime‑outs te voorkomen. - Bibliotheek‑updates – blijf op de nieuwste GroupDocs.Search‑release; versie 25.4 voegt een snelheidsverbetering van 30 % toe voor attribuut‑filterevaluatie vergeleken met 24.x.
Veelvoorkomende problemen en oplossingen
| Probleem | Waarom het gebeurt | Hoe op te lossen |
|---|---|---|
| Attributen niet toegepast | Event‑handler niet geregistreerd vóór het indexeren | Zorg ervoor dat index.getEvents().FileIndexing.add(...) vóór alle index.add(...)‑aanroepen wordt uitgevoerd. |
| Zoekopdracht geeft geen resultaten | Attribuutnaam komt niet overeen (hoofdlettergevoelig) | Gebruik exacte attribuutnamen bij het maken van filters (createAttribute("main")). |
| Out‑of‑memory‑fouten bij grote batches | Te veel wijzigingen in één batch | Splits grote updates op in kleinere AttributeChangeBatch‑instanties (bijv. 5 000 documenten per batch). |
| Licentie niet herkend | Gebruik van trial‑JAR zonder licentiebestand toe te passen | Roep License license = new License(); license.setLicense("path/to/license.file"); aan vóór enige index‑operatie. |
Veelgestelde vragen
Q: Wat zijn de vereisten voor het gebruik van GroupDocs.Search in Java?
A: Java 8+, de GroupDocs.Search‑bibliotheek, en basiskennis van indexeerconcepten.
Q: Hoe installeer ik GroupDocs.Search via Maven?
A: Voeg de repository en afhankelijkheid toe die in de Maven‑configuratie‑sectie worden getoond aan je pom.xml.
Q: Kan ik attributen wijzigen nadat documenten zijn geïndexeerd?
A: Ja, gebruik AttributeChangeBatch om documentattributen batch‑gewijs bij te werken zonder opnieuw te indexeren.
Q: Wat als mijn indexeerproces traag is?
A: Optimaliseer JVM‑geheugen (-Xmx), gebruik batch‑updates, en upgrade naar de nieuwste bibliotheekversie voor prestatie‑patches.
Q: Waar kan ik meer bronnen vinden over GroupDocs.Search voor Java?
A: Bezoek de officiële documentatie of verken de community‑forums.
Bronnen
- Documentatie: GroupDocs.Search for Java Docs
- API‑referentie: API Reference
- Download: Latest Releases
- GitHub: GitHub GroupDocs.Search
- Gratis ondersteuningsforum: GroupDocs Forums
- Tijdelijke licentie: License Page
Last Updated: 2026-09-21
Tested With: GroupDocs.Search 25.4 for Java
Author: 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");