2026-02-27
Testato con: GroupDocs.Search for Java 25.4
Autore: GroupDocs
Make sure to keep the markdown formatting.
Now produce final content.# Crea indice ricercabile Java – Distribuisci GroupDocs.Search per Java
Nel mondo odierno guidato dai dati, le applicazioni creare un indice ricercabile Java hanno bisogno di gestire collezioni di documenti massive in modo efficiente. Che tu stia costruendo un servizio di ricerca di livello enterprise o un progetto più piccolo, una rete di ricerca ben configurata può migliorare drasticamente la velocità di recupero e la pertinenza. In questa guida percorreremo l’intero processo di configurazione di GroupDocs.Search for Java, dall’aggiunta di file alla ricerca all’aggiunta di directory al nodo, così potrai iniziare subito a indicizzare i tuoi documenti.
Perché è importante: Un indice ricercabile riduce la latenza delle query da secondi a millisecondi, scala con la crescita dei tuoi dati e ti consente di aggiungere potenti capacità di ricerca full‑text a qualsiasi soluzione basata su Java — sia che si tratti di un portale web, di un’app desktop o di un microservizio cloud.
Risposte Rapide
- Qual è lo scopo principale di GroupDocs.Search? Fornisce un motore scalabile, basato su Java, per l’indicizzazione e la ricerca di documenti su una rete distribuita.
- Quale versione dovrei usare? L’ultima release stabile (ad es., 25.4) è consigliata per nuovi progetti.
- Ho bisogno di una licenza? È disponibile una prova gratuita di 30 giorni; è necessaria una licenza permanente per l’uso in produzione.
- Posso aggiungere sia file che intere directory? Sì – utilizza gli helper
addFileseaddDirectoriesper ingerire i contenuti. - Quale versione di Java è richiesta? Java 8 o superiore, con Maven per la gestione delle dipendenze.
- Come funziona l’indicizzazione in tempo reale Java? Sottoscrivendo gli eventi del nodo è possibile attivare il re‑indicizzazione automatico quando i file cambiano.
Cos’è “creare indice ricercabile Java”?
Creare un indice ricercabile in Java significa costruire una struttura dati che mappa i termini ai documenti che li contengono, consentendo query full‑text rapide. GroupDocs.Search astrae la parte più complessa, permettendoti di concentrarti sull’alimentare i documenti e sulla messa a punto del comportamento di ricerca.
Perché usare GroupDocs.Search per Java?
- Architettura di rete scalabile – Distribuisci più nodi che condividono il carico di indicizzazione.
- Supporto ricco per formati di documento – PDF, Word, Excel, PowerPoint, immagini e altro.
- Aggiornamenti basati su eventi – Sottoscrivi gli eventi del nodo per mantenere l’indice aggiornato in tempo reale.
- Integrazione Maven semplice – Aggiungi poche righe a
pom.xmle inizia l’indicizzazione.
Indicizzazione in tempo reale Java con GroupDocs.Search
GroupDocs.Search genera eventi ogni volta che un file viene aggiunto, aggiornato o rimosso. Gestendo questi eventi è possibile chiamare addFiles o addDirectories automaticamente, garantendo che l’indice rimanga sincronizzato senza intervento manuale. Questo approccio è ideale per sistemi di gestione documentale, portali di contenuti e qualsiasi applicazione in cui i dati cambiano frequentemente.
Prerequisiti
- JDK 8+ installato sulla tua macchina di sviluppo.
- Un IDE come IntelliJ IDEA o Eclipse.
- Conoscenza di base di Java e Maven.
- Accesso alla libreria GroupDocs.Search for Java (download o Maven).
Configurare GroupDocs.Search per Java
Dipendenza Maven
Aggiungi il repository e la dipendenza al tuo 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>
Suggerimento: Mantieni il numero di versione aggiornato controllando la pagina ufficiale delle release.
Puoi anche scaricare il JAR direttamente dal sito ufficiale: GroupDocs.Search for Java releases.
Acquisizione Licenza
- Prova gratuita: valutazione di 30 giorni.
- Licenza temporanea: Richiedi per test estesi.
- Acquisto: Necessario per le distribuzioni in produzione.
Inizializzazione Base
Crea un oggetto di configurazione che punta a una cartella dove saranno memorizzati i file di indice e definisce la porta di comunicazione di base:
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
}
}
Come creare un indice ricercabile Java con GroupDocs.Search?
Di seguito scomponiamo le funzionalità principali di cui avrai bisogno per add files to search e add directories to node, oltre a distribuire una rete scalabile.
Funzione 1 – Configurazione e Setup della Rete
Configurare la rete di ricerca è il primo passo per costruire un indice ricercabile.
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– Directory in cui i dati dell’indice saranno persistiti.basePort– Porta di partenza; ogni nodo incrementerà da questo valore.
Funzione 2 – Distribuzione dei Nodi della Rete di Ricerca
Distribuire i nodi distribuisce il carico di indicizzazione su più macchine o processi.
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()};
}
}
Ogni SearchNetworkNode esegue il proprio servizio di indicizzazione, consentendoti di creare un indice ricercabile Java che scala orizzontalmente.
Funzione 3 – Sottoscrizione agli Eventi del Nodo
Gli aggiornamenti in tempo reale mantengono l’indice sincronizzato con le modifiche del file system.
import com.groupdocs.search.scaling.*;
class SearchNetworkNodeEvents {
public static void subscribe(SearchNetworkNode node) {
// Logic to subscribe to the specified node's events
}
}
Ascoltando gli eventi, puoi attivare automaticamente il re‑indicizzazione quando arrivano nuovi file.
Funzione 4 – Aggiunta di Directory al Nodo di Rete
Usa questo helper per add directories to node, raccogliendo ricorsivamente tutti i documenti supportati.
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());
}
}
}
}
Funzione 5 – Aggiunta di File al Nodo di Rete
Quando hai bisogno di un controllo più fine, add files to search individualmente:
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();
}
}
}
Questo metodo ti offre la flessibilità di indicizzare file provenienti da stream, storage cloud o posizioni temporanee.
Casi d’Uso Comuni
- Portali documentali enterprise che necessitano di ricerca istantanea su migliaia di PDF e file Office.
- Piattaforme di e‑discovery legale dove nuove prove vengono aggiunte continuamente e devono essere ricercabili in tempo reale.
- Sistemi di gestione dei contenuti che archiviano immagini, presentazioni e fogli di calcolo e richiedono ricerche full‑text.
Problemi Comuni & Soluzioni
| Problema | Motivo | Soluzione |
|---|---|---|
| Nessun documento appare nei risultati di ricerca | Indice non committato | Chiama node.getIndexer().commit() dopo aver aggiunto i file. |
| Errore di conflitto di porta | Un altro servizio utilizza basePort | Scegli un basePort diverso o verifica le porte libere. |
| Formato file non supportato | La libreria non dispone di un parser | Assicurati che l’estensione del file sia supportata o aggiungi un estrattore personalizzato. |
Suggerimenti per la Risoluzione dei Problemi
- Verifica lo stato del nodo: Usa l’endpoint di health‑check integrato (
http://localhost:{port}/health) per confermare che ogni nodo sia in esecuzione. - Monitora l’uso della memoria: Grandi batch di documenti possono aumentare l’uso di memoria; considera di indicizzare in blocchi più piccoli e chiamare
commit()periodicamente. - Controlla i log: GroupDocs.Search scrive log dettagliati nella cartella
basePath— rivedili per errori di parsing o timeout di rete.
Domande Frequenti
Q: Posso usare GroupDocs.Search su un’applicazione Java basata su cloud?
A: Sì. La libreria funziona con qualsiasi runtime Java, e puoi puntare basePath a una cartella montata in rete o a uno storage cloud montato localmente.
Q: Come aggiorno l’indice quando un file cambia?
A: Sottoscrivi gli eventi del nodo (vedi Funzione 3) e chiama nuovamente addFiles o addDirectories per i percorsi modificati.
Q: Esiste un limite al numero di nodi che posso distribuire?
A: Praticamente, il limite è definito dall’hardware e dalla larghezza di banda della rete. L’API stessa non impone un limite rigido.
Q: Devo riavviare i nodi dopo aver aggiunto nuovi file?
A: No. L’aggiunta di file attiva l’indicizzazione automaticamente; è necessario eseguire il commit solo se differisci l’operazione.
Q: Quali formati di documento sono supportati nativamente?
A: PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML e molti tipi di immagine. Consulta la documentazione ufficiale per l’elenco completo.
Q: Come posso abilitare l’indicizzazione in tempo reale Java per una cartella che riceve upload continuamente?
A: Implementa un watcher del file system (ad es., java.nio.file.WatchService) che chiama DirectoryAdder.addDirectories(node, path) ogni volta che viene rilevato un nuovo file.
Ultimo aggiornamento: 2026-02-27
Testato con: GroupDocs.Search for Java 25.4
Autore: GroupDocs