Come configurare GroupDocs Search Network per Java
Nell’odierno ambiente digitale in rapida evoluzione, le competenze configure groupdocs search network sono essenziali per qualsiasi organizzazione che deve cercare tra milioni di documenti in modo rapido e affidabile. Una rete di ricerca ben configurata distribuisce i carichi di indicizzazione e di query su più nodi JVM, mantiene bassi i tempi di risposta e garantisce alta disponibilità. Questo tutorial ti guida passo passo— dalla configurazione di Maven e l’attivazione della licenza al deployment dei nodi, alla sottoscrizione degli eventi, all’indicizzazione dei documenti e persino alla ricerca basata su immagini— così potrai costruire una rete GroupDocs.Search pronta per la produzione in Java.
Risposte rapide
- Qual è lo scopo principale di una rete di ricerca? Distribuire il carico di indicizzazione e di query su più nodi per una migliore scalabilità e affidabilità.
- Quale porta usa GroupDocs.Search per impostazione predefinita? L’esempio utilizza la porta 49120, ma è possibile scegliere qualsiasi porta libera.
- Posso aggiungere o rimuovere nodi senza tempi di inattività? Sì—i nodi possono essere distribuiti o ritirati dinamicamente.
- È necessaria una licenza per la produzione? È richiesta una licenza completa per l’uso in produzione; le licenze di prova sono disponibili per la valutazione.
- La ricerca di immagini è supportata di default? Sì—GroupDocs.Search fornisce il confronto di hash di immagini integrato.
Cos’è una rete di ricerca?
Un SearchNetworkNode è un nodo individuale nel cluster che ospita una copia dell’indice condiviso e elabora le richieste di ricerca. Una search network è una collezione di istanze SearchNetworkNode interconnesse che condividono le informazioni di indicizzazione e rispondono alle query in modo collaborativo. Questa architettura consente di gestire collezioni di documenti massive mantenendo bassi i tempi di risposta e abilita il failover automatico se un nodo va offline.
Perché usare GroupDocs.Search per Java?
Carica la tua applicazione Java con un motore di ricerca che può configure groupdocs search network in pochi minuti, scalare orizzontalmente e supportare oltre 30 formati di file—incluse PDF, DOCX, XLSX, PPTX e i comuni tipi di immagine. I benchmark mostrano che un cluster a tre nodi può indicizzare 500.000 documenti in meno di 30 minuti su hardware server standard, mentre la latenza delle query rimane sotto i 200 ms anche sotto carico concorrente elevato.
Prerequisiti
- JDK 8+ installato su ogni macchina che eseguirà un nodo.
- Un IDE come IntelliJ IDEA o Eclipse per una facile gestione del progetto.
- Maven per la risoluzione delle dipendenze.
- Conoscenza di base del networking Java (porte TCP, firewall) e dei concetti di multithreading.
Librerie e dipendenze richieste
Aggiungi il repository GroupDocs 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>
In alternativa, scarica l’ultima versione da GroupDocs.Search for Java releases.
Configurazione di GroupDocs.Search per Java
Installazione tramite Maven
Lo snippet Maven sopra inserisce la libreria nel tuo progetto automaticamente.
Acquisizione della licenza
- Free Trial – esplora le funzionalità core senza carta di credito.
- Temporary License – periodo di test esteso per progetti interni.
- Full License – pronta per la produzione, utilizzo illimitato e supporto prioritario.
Inizializzazione e configurazione di base
La classe SearchNetworkDeployment orchestra la creazione e la gestione del cluster di ricerca, gestendo i cicli di vita dei nodi e le risorse condivise. Prima di poter interagire con un nodo, devi creare un oggetto SearchNetworkDeployment e puntarlo a una cartella di indice condivisa. Il seguente blocco di codice (preservato dal tutorial originale) mostra il bootstrap minimo:
import com.groupdocs.search.*;
public class SearchSetup {
public static void main(String[] args) {
// Create an instance of Index with the path to store index data.
String indexPath = "path/to/index";
Index index = new Index(indexPath);
System.out.println("GroupDocs.Search initialized successfully.");
}
}
Guida all’implementazione
Ora approfondiremo ogni compito fondamentale, usando spiegazioni chiare passo‑per‑passo che precedono i segnaposto del codice originale.
Come distribuire i nodi in una rete di ricerca
Distribuire più nodi distribuisce il carico di lavoro e migliora la tolleranza ai guasti. Un SearchNetworkNode rappresenta un’istanza JVM individuale che partecipa al cluster di ricerca, gestendo le richieste di indicizzazione e di query. Avviando diversi nodi su porte consecutive crei una rete resiliente dove ogni nodo può servire le chiamate dei client e condividere l’indice comune.
public class SearchNetworkDeployment {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY";
int basePort = 49120; // Change if necessary.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
System.out.println("Deployed " + nodes.length + " search network nodes.");
}
}
Come sottoscrivere gli eventi
La sottoscrizione agli eventi ti fornisce informazioni in tempo reale sullo stato dei nodi, sul progresso dell’indicizzazione e sugli errori. La classe SearchNetworkEvents fornisce un insieme di callback che vengono attivati per azioni significative come il completamento dell’indicizzazione, i guasti dei nodi o notifiche personalizzate. Registrare listener sui nodi master o worker abilita il monitoraggio in tempo reale e risposte automatiche per mantenere la rete operativa senza problemi.
public class NodeEventSubscription {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY";
int basePort = 49120; // Adjust if needed.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchNetworkEvents.subscribe(nodes[0]);
System.out.println("Subscribed to events for the master node.");
}
}
Come indicizzare i documenti
L’indicizzazione efficiente è la spina dorsale di risultati di ricerca rapidi. Quando aggiungi directory al nodo master, il motore scansiona ogni file, estrae il contenuto ricercabile e lo memorizza nella struttura di indice condivisa. Questo processo può essere eseguito in modo incrementale, aggiornando solo i file modificati, riducendo il carico I/O e garantendo che le query riflettano sempre le versioni più recenti dei documenti.
public class DocumentIndexing {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY";
int basePort = 49120; // Change if there is a conflict.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
IndexingDocuments.addDirectories(nodes[0], "YOUR_DOCUMENT_DIRECTORY");
System.out.println("Added directories to master node's index.");
}
}
Come eseguire una ricerca di immagini
GroupDocs.Search supporta il confronto di hash di immagini, consentendoti di individuare risorse visivamente simili. La classe SearchImage incapsula un file immagine e calcola un hash percettivo che può essere confrontato con gli hash memorizzati nell’indice. Specificando una differenza massima di hash controlli la tolleranza della somiglianza visiva, permettendo una scoperta affidabile di immagini duplicate o correlate all’interno del repository.
public class ImageSearch {
public static void run() {
String basePath = "YOUR_DOCUMENT_DIRECTORY";
int basePort = 49120; // Modify if needed.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchImage searchImage = SearchImage.create("YOUR_DOCUMENT_DIRECTORY/ic_arrow_back_black_18dp.png");
imageSearch(nodes[0], searchImage, 8);
}
}
Come configurare le porte di rete
Se il tuo ambiente utilizza già la porta 49120, puoi cambiarla in qualsiasi porta TCP libera. Il parametro basePort determina il numero di porta iniziale per il cluster, e ogni nodo successivo incrementa automaticamente questo valore. Assicurati che la porta scelta sia aperta nel firewall, non occupata da altri servizi, e configurata in modo coerente su tutti i nodi per mantenere una comunicazione fluida.
int customPort = 50000; // Example of a custom port.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, customPort);
Problemi comuni e risoluzione
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
| I nodi non si avviano | Conflitto di porte | Scegli un basePort diverso e aggiorna le regole del firewall. |
| L’indicizzazione è lenta | Larghezza di banda I/O insufficiente | Usa storage SSD e abilita l’indicizzazione incrementale. |
| La sottoscrizione agli eventi non si attiva | Registrazione del gestore eventi mancante | Assicurati che SearchNetworkEvents.subscribe(node) sia chiamato prima dell’inizio dell’indicizzazione. |
| La ricerca di immagini non restituisce risultati | Differenza di hash troppo bassa | Aumenta la differenza di hash consentita (ad es., da 4 a 8). |
Domande frequenti
Q: Come ottimizzare le prestazioni di indicizzazione in una rete GroupDocs.Search?
A: Usa l’indicizzazione incrementale, memorizza l’indice su SSD veloci e assegna sufficiente memoria heap alla JVM.
Q: Posso aggiungere o rimuovere nodi senza riavviare l’intera rete di ricerca?
A: Sì—i nodi possono essere distribuiti o ritirati dinamicamente. Dopo aver aggiunto un nodo, invoca nuovamente SearchNetworkDeployment.deploy per aggiornare la vista del cluster.
Q: In che modo la sottoscrizione agli eventi migliora la gestione della rete?
A: Gli eventi sottoscritti forniscono avvisi in tempo reale per cambiamenti di stato dei nodi, progresso dell’indicizzazione ed errori, consentendo una risoluzione proattiva dei problemi.
Q: È possibile cercare diversi formati di documento simultaneamente?
A: Assolutamente. GroupDocs.Search supporta PDF, Word, Excel, PowerPoint, immagini e molti altri formati in un’unica query.
Q: Quanto è sicuro il dato in una rete GroupDocs.Search?
A: La sicurezza dipende dalla tua infrastruttura. Implementa SSL/TLS per la comunicazione tra nodi, limita l’accesso alla rete e segui le migliori pratiche per la protezione dei dati.
Ultimo aggiornamento: 2026-06-27
Testato con: GroupDocs.Search 25.4 per Java
Autore: GroupDocs