Ricerca per attributo java con la guida GroupDocs.Search
Nelle moderne applicazioni incentrate sui documenti è spesso necessario individuare i file non solo in base al loro contenuto testuale ma anche tramite metadati personalizzati come reparto, livello di riservatezza o data di creazione. Search by attribute java ti offre questa capacità in un’unica query ad alte prestazioni. In questo tutorial vedrai come aggiornare in batch gli attributi su file già indicizzati, inserire attributi durante l’indicizzazione e interrogare efficientemente i documenti per metadati usando la libreria GroupDocs.Search per Java.
Risposte rapide
- Che cos’è “search by attribute java”? Consente di filtrare i risultati di ricerca con metadati chiave‑valore allegati a ciascun documento indicizzato.
- Posso modificare gli attributi dopo l’indicizzazione? Sì – usa
AttributeChangeBatchper applicare modifiche in blocco senza ricostruire l’intero indice. - Come aggiungere attributi durante l’indicizzazione? Registra un gestore per l’evento
FileIndexinge imposta gli attributi programmaticamente per ogni file. - È necessaria una licenza? Una prova gratuita è sufficiente per la valutazione; è richiesta una licenza permanente per le distribuzioni in produzione.
- Quale versione di Java è richiesta? Si consiglia Java 8 o successiva.
Che cos’è “search by attribute java”?
Search by attribute java consente di interrogare i documenti in base a metadati personalizzati (attributi) anziché solo al loro contenuto testuale. Questo approccio riduce drasticamente i set di risultati, diminuisce il traffico di rete e velocizza i tempi di risposta perché il motore valuta i filtri di attributo prima di eseguire la scansione full‑text.
Perché utilizzare il tagging dinamico dei metadati?
Il tagging dinamico dei metadati ti consente di assegnare, aggiornare e gestire attributi personalizzati per i documenti senza re‑indicizzazione, fornendo una classificazione flessibile che si adatta a regole aziendali in evoluzione, migliora l’efficienza della ricerca e riduce la necessità di costose migrazioni di dati attraverso grandi repository, mantenendo conformità e tracciabilità.
- Dynamic categorization – mantieni i metadati sincronizzati con le regole aziendali in evoluzione.
- Faster filtering – i filtri di attributo vengono valutati prima della ricerca full‑text, migliorando i tempi di risposta.
- Compliance tracking – etichetta i documenti per le politiche di conservazione o i requisiti di audit.
- Batch update attributes – modifica molti documenti in un’unica operazione senza re‑indicizzare tutto.
Prerequisiti
- Java 8+ (JDK 8 o più recente)
- GroupDocs.Search for Java library (vedi configurazione Maven di seguito)
- Familiarità di base con le collezioni Java e la gestione delle eccezioni
Configurazione di GroupDocs.Search per Java
Configurazione Maven
Aggiungi il repository GroupDocs e la dipendenza al tuo 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>
Download diretto
In alternativa, scarica l’ultima versione da GroupDocs.Search for Java releases. Se preferisci non usare Maven, ottieni il JAR dal sito GroupDocs.
Acquisizione della licenza
- Inizia con una prova gratuita per esplorare le funzionalità.
- Per un uso prolungato, ottieni una licenza temporanea o completa tramite la pagina della licenza.
Inizializzazione di base
// 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");
Come modificare gli attributi dei documenti (aggiornamento batch)
Per modificare gli attributi dei documenti dopo che sono stati indicizzati, puoi utilizzare l’API AttributeChangeBatch per applicare aggiornamenti in blocco. Questo approccio aggiorna i metadati dei file selezionati in un’unica transazione, evitando l’overhead della re‑indicizzazione dell’intera collezione e mantenendo intatto l’indice full‑text.
Direct answer: Usa AttributeChangeBatch per raggruppare aggiunte, eliminazioni o sostituzioni di metadati in un’unica operazione atomica, quindi conferma il batch nell’indice. Questo aggiorna gli attributi di molti documenti in un solo passaggio preservando l’indice full‑text esistente.
Passo 1: aggiungi documenti all’indice
index.add("C:/docs/contract1.pdf");
index.add("C:/docs/report2.docx");
Passo 2: recupera le informazioni del documento indicizzato
DocumentInfo info = index.getDocumentInfo("contract1.pdf");
System.out.println("Current attributes: " + info.getAttributes());
Passo 3: aggiornamento batch degli attributi del documento
La classe AttributeChangeBatch raggruppa più modifiche di attributi in un’unica operazione atomica, riducendo l’overhead I/O e garantendo la coerenza dell’indice.
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);
Passo 4: ricerca con filtri di attributo
SearchOptions options = new SearchOptions();
options.addAttributeFilter("department", "Legal");
SearchResult result = index.search("agreement", options);
System.out.println("Found " + result.getCount() + " legal documents.");
Come aggiungere attributi durante l’indicizzazione
Aggiungere attributi durante il processo di indicizzazione garantisce che ogni documento sia arricchito con i metadati necessari fin dall’inizio. Gestendo l’evento FileIndexing, puoi allegare programmaticamente coppie chiave‑valore a ogni oggetto DocumentInfo prima che il motore elabori il file, garantendo la disponibilità coerente degli attributi per le ricerche successive.
Direct answer: Iscriviti all’evento FileIndexing prima di aggiungere i file; nel gestore dell’evento, chiama addAttribute sull’oggetto DocumentInfo per allegare coppie chiave‑valore, quindi lascia che l’indice continui a elaborare il file.
Passo 1: iscriviti all’evento FileIndexing
L’evento FileIndexing viene attivato per ogni file man mano che viene aggiunto all’indice, consentendoti di inserire metadati personalizzati.
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);
});
Passo 2: indicizza i documenti
index.add("C:/incoming/hr/policy.pdf");
index.add("C:/incoming/finance/budget.xlsx");
Applicazioni pratiche
- Document management systems – etichetta automaticamente i file all’ingestione, consentendo una navigazione a faccette istantanea.
- Large content archives – combina filtri di attributi con la ricerca full‑text per ridurre il tempo di query da minuti a secondi su collezioni multi‑gigabyte.
- Compliance & reporting – assegna dinamicamente periodi di conservazione, livelli di riservatezza o flag di audit che possono essere interrogati per verifiche normative.
Considerazioni sulle prestazioni
- Memory management – monitora l’heap JVM e regola
-Xmx(ad es.,-Xmx4gper indici più grandi di 2 GB). - Batch processing – raggruppa le modifiche di attributi con
AttributeChangeBatchper ridurre al minimo le scritture su disco; suddividi i batch più grandi di 10 000 modifiche per evitare timeout di transazione. - Library updates – mantieniti sulla versione più recente di GroupDocs.Search; la versione 25.4 aggiunge un incremento di velocità del 30 % nella valutazione dei filtri di attributo rispetto alla 24.x.
Problemi comuni e soluzioni
| Problema | Perché accade | Come risolverlo |
|---|---|---|
| Attributi non applicati | Gestore eventi non registrato prima dell’indicizzazione | Assicurati che index.getEvents().FileIndexing.add(...) venga eseguito prima di qualsiasi chiamata a index.add(...). |
| La ricerca non restituisce risultati | Mancata corrispondenza del nome dell’attributo (case‑sensitive) | Usa i nomi esatti degli attributi quando crei i filtri (createAttribute("main")). |
| Errori Out‑of-memory su batch grandi | Troppe modifiche in un unico batch | Dividi gli aggiornamenti grandi in istanze AttributeChangeBatch più piccole (ad es., 5 000 doc per batch). |
| Licenza non riconosciuta | Uso del JAR di prova senza applicare il file di licenza | Chiama License license = new License(); license.setLicense("path/to/license.file"); prima di qualsiasi operazione di indicizzazione. |
Domande frequenti
Q: Quali sono i prerequisiti per usare GroupDocs.Search in Java?
A: Java 8+, la libreria GroupDocs.Search e conoscenze di base dei concetti di indicizzazione.
Q: Come installo GroupDocs.Search tramite Maven?
A: Aggiungi il repository e la dipendenza mostrati nella sezione di configurazione Maven al tuo pom.xml.
Q: Posso modificare gli attributi dopo che i documenti sono indicizzati?
A: Sì, usa AttributeChangeBatch per aggiornare in batch gli attributi dei documenti senza re‑indicizzare.
Q: Cosa succede se il mio processo di indicizzazione è lento?
A: Ottimizza la memoria JVM (-Xmx), usa aggiornamenti batch e aggiorna alla versione più recente della libreria per le correzioni di prestazioni.
Q: Dove posso trovare più risorse su GroupDocs.Search per Java?
A: Visita la documentazione ufficiale o esplora i forum della community.
Risorse
- Documentazione: GroupDocs.Search for Java Docs
- Riferimento API: API Reference
- Download: Latest Releases
- GitHub: GitHub GroupDocs.Search
- Forum di supporto gratuito: GroupDocs Forums
- Licenza temporanea: License Page
Ultimo aggiornamento: 2026-09-21
Testato con: GroupDocs.Search 25.4 per Java
Autore: 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");