Evidenziare i risultati di ricerca Java – Indicizzazione sincrona e asincrona
In questa guida scoprirai come evidenziare i risultati di ricerca Java usando la libreria GroupDocs.Search, e vedrai passo‑per‑passo come indicizzare documenti Java sia in modo sincrono che asincrono. Che tu stia creando un piccolo strumento desktop o un servizio di ricerca aziendale su larga scala, queste tecniche ti permettono di fornire corrispondenze istantanee e visivamente chiare senza bloccare i thread della tua applicazione.
Risposte rapide
- Cosa significa “highlight search results Java”? Significa avvolgere ogni termine corrispondente negli snippet restituiti con markup (ad esempio
<mark>) in modo che gli utenti possano vedere istantaneamente il contesto del risultato. - Quando dovrei usare l’indicizzazione sincrona? Usala per collezioni piccole‑medie dove è necessario che il documento sia ricercabile subito dopo l’aggiunta.
- Quando è preferibile l’indicizzazione asincrona? Sceglila per grandi batch o quando il thread UI deve rimanere reattivo mentre l’indice viene costruito in background.
- Ho bisogno di una licenza? Una prova gratuita è sufficiente per lo sviluppo; una licenza completa rimuove i limiti e sblocca le funzionalità avanzate.
- Quale versione di Java è supportata? Java 8 o successive.
Cos’è “highlight search results Java”?
highlight search results java è il processo di prendere i dati grezzi delle corrispondenze da GroupDocs.Search e inserire indicatori visivi — tipicamente tag HTML <mark> — attorno a ogni termine trovato. Questo rende gli snippet dei risultati immediatamente leggibili in una pagina web o in un componente Swing, migliorando l’esperienza utente mostrando esattamente dove appare la query.
Perché usare GroupDocs.Search per Java?
GroupDocs.Search offre un motore ad alte prestazioni, indipendente dalla lingua, in grado di elaborare fino a 5 000 documenti al secondo, supportare oltre 30 formati di file, e indicizzare collezioni di 10 milioni di documenti senza caricare l’intero corpus in memoria. Il suo evidenziatore integrato, l’indicizzazione in tempo reale e gli analizzatori multilingua lo rendono ideale per sistemi di gestione dei contenuti, cataloghi e‑commerce e repository di documenti aziendali.
Prerequisiti
- Java Development Kit (JDK 8 o più recente) installato e
JAVA_HOMEcorrettamente impostato. - Un IDE come IntelliJ IDEA o Eclipse.
- Una cartella (ad es.,
documents/) contenente i file che desideri indicizzare — testo semplice, PDF, DOCX, ecc. - Maven per la gestione delle dipendenze (oppure puoi aggiungere manualmente il JAR).
Librerie e dipendenze richieste
Aggiungi GroupDocs.Search al tuo Maven pom.xml:
<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>
Per download diretti, ottieni l’ultima versione da Versioni di GroupDocs.Search per Java.
Configurazione dell’ambiente
- Verifica che
JAVA_HOMEpunti a un JDK compatibile. - Crea un nuovo progetto Maven e incolla lo snippet sopra nella sezione
<dependencies>. - Posiziona i file di esempio in una directory come
src/main/resources/documents/.
Come configurare GroupDocs.Search per Java
Index è la classe principale che rappresenta una collezione ricercabile memorizzata su disco.
Crea un’istanza Index che punta a una cartella su disco, applica una licenza se ne possiedi una, e opzionalmente configura un analizzatore per la tokenizzazione specifica della lingua. Questo passaggio di preparazione garantisce che il motore possa leggere, scrivere e cercare l’indice in modo efficiente.
La classe Index è il componente principale che rappresenta una collezione ricercabile su disco. Dopo averla istanziata, tutte le operazioni di indicizzazione e query passano attraverso questo oggetto.
- Installa la libreria – Usa lo snippet Maven sopra o scarica il JAR da GroupDocs.
- Ottieni una licenza – Inizia con una licenza di prova; sostituiscila con una chiave di produzione prima del rilascio.
- Inizializza l’indice – Lo snippet seguente mostra come creare (o aprire) una cartella indice:
import com.groupdocs.search.Index;
// Create an index in the specified folder
Index index = new Index("path/to/index/folder");
Come evidenziare i risultati di ricerca Java – indicizzazione sincrona
DocumentHighlighter è una classe di utilità che genera snippet evidenziati dai risultati di ricerca.
Carica l’indice, aggiungi documenti con index.add(documentPath), esegui una query, e poi chiama DocumentHighlighter per avvolgere le corrispondenze nei tag <mark>. L’intero processo viene eseguito sul thread chiamante, quindi il documento diventa ricercabile immediatamente dopo il ritorno di add per gli utenti finali.
Passo 1: crea l’indice e aggiungi la gestione degli errori
import com.groupdocs.search.*;
import com.groupdocs.search.events.*;
import java.nio.file.Paths;
public class SynchronousIndexingFeature {
public static void main(String[] args) {
String indexFolder = "YOUR_DOCUMENT_DIRECTORY/SynchronousIndexing";
String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path
Index index = new Index(indexFolder);
// Handle errors
index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
@Override
public void invoke(Object sender, IndexErrorEventArgs args) {
System.out.println(args.getMessage());
}
});
Passo 2: aggiungi documenti ed esegui una ricerca
// Add documents
index.add(documentsFolder);
// Perform a search
String query = "tincidunt";
SearchResult result = index.search(query);
Passo 3: elabora i risultati e evidenzia i risultati di ricerca Java
for (int i = 0; i < result.getDocumentCount(); i++) {
FoundDocument document = result.getFoundDocument(i);
System.out.println(": Document: " + document.getDocumentInfo().getFilePath());
System.out.println(": Occurrences: " + document.getOccurrenceCount());
}
// Highlight results
if (result.getDocumentCount() > 0) {
FoundDocument document = result.getFoundDocument(0);
String path = YOUR_OUTPUT_DIRECTORY + "/Highlighted.html";
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, path);
DocumentHighlighter highlighter = new DocumentHighlighter(outputAdapter);
index.highlight(document, highlighter);
}
}
}
Come evidenziare i risultati di ricerca Java – indicizzazione asincrona
IndexingOptions configura come viene eseguito il processo di indicizzazione, includendo modalità sincrona o asincrona.
Configura IndexingOptions per l’esecuzione in modalità background, iscriviti agli eventi StatusChanged, e lascia che il motore indicizzi i file mentre la tua UI continua a servire altre richieste. Una volta che lo stato cambia in Ready, puoi eseguire ricerche e ottenere snippet evidenziati proprio come nella modalità sincrona.
AsyncIndexingListener riceve aggiornamenti di avanzamento, permettendoti di visualizzare una barra di progresso o registrare lo stato senza bloccare il thread principale.
Passo 1: configura l’indice con i listener di eventi
import com.groupdocs.search.*;
import com.groupdocs.search.events.*;
public class AsynchronousIndexingFeature {
public static void main(String[] args) {
String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AsynchronousIndexing";
String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path
Index index = new Index(indexFolder);
// Handle errors and status changes
index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
@Override
public void invoke(Object sender, IndexErrorEventArgs args) {
System.out.println(args.getMessage());
}
});
index.getEvents().StatusChanged.add(new EventHandler<BaseIndexEventArgs>() {
@Override
public void invoke(Object sender, BaseIndexEventArgs args) {
if (args.getStatus() != IndexStatus.Ready || args.getStatus() == IndexStatus.Failed) {
System.out.println("Indexing completed.");
}
}
});
Passo 2: abilita la modalità asincrona e avvia l’indicizzazione
// Set up async indexing options
IndexingOptions options = new IndexingOptions();
options.setAsync(true);
// Add documents asynchronously
index.add(documentsFolder, options);
}
}
Come indicizzare documenti Java – consigli pratici
index.update(path) aggiorna un documento esistente nell’indice con il file al percorso specificato.
Dividi grandi collezioni in batch di 1 000–5 000 file, filtra per estensione per evitare parsing non necessari, e usa index.update(path) per i file modificati invece di ricostruire l’intero indice. Queste pratiche mantengono basso l’uso della memoria e prevedibile il tempo di indicizzazione per garantire coerenza.
- Dimensione batch: Per collezioni enormi, suddividi la cartella in batch più piccoli per evitare picchi di memoria.
- Filtri file: Usa
IndexingOptions.setFileExtensionsper includere solo i formati necessari (ad es.,.pdf,.docx). - Re‑indicizzazione: Quando un documento cambia, chiama
index.update(documentPath)invece di ricreare l’indice da zero.
Considerazioni sulle prestazioni
- Memoria: Monitora l’uso dell’heap; aumenta
-Xmxse elabori molti file grandi simultaneamente. - CPU: L’indicizzazione asincrona distribuisce il carico di lavoro tra i thread ma consuma comunque CPU — monitora l’uso con JVisualVM.
- Evidenziazione dei risultati: L’evidenziazione aggiunge un modesto overhead (≈ 2–5 ms per risultato). Metti in cache l’HTML generato se devi visualizzare gli stessi snippet più volte.
Domande frequenti
Q: Posso combinare indicizzazione sincrona e asincrona nella stessa applicazione?
A: Sì. Usa l’indicizzazione sincrona per set piccoli e frequentemente aggiornati e l’indicizzazione asincrona per importazioni massive o lavori in background.
Q: Come personalizzo lo stile di evidenziazione?
A: Fornisci un’implementazione personalizzata di DocumentHighlighter che scriva gli HTML, CSS o tag XML desiderati attorno ai termini corrispondenti.
Q: Quali tipi di file supporta GroupDocs.Search di default?
A: Testo, PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, HTML, e molti altri tramite parser integrati — oltre 30 formati in totale.
Q: È possibile cercare in più lingue simultaneamente?
A: Assolutamente. GroupDocs.Search include analizzatori multilingua; basta configurare l’Analyzer appropriato quando crei l’indice.
Q: Come proteggere la cartella dell’indice?
A: Conserva l’indice in una directory protetta, imposta permessi di file‑system rigidi e, facoltativamente, cripta l’indice usando le funzionalità di sicurezza della libreria.
Ultimo aggiornamento: 2026-09-11
Testato con: GroupDocs.Search 25.4 for Java
Autore: GroupDocs