Crea un indice ricercabile Java – Distribuisci GroupDocs.Search per Java

Nel mondo odierno guidato dai dati, le applicazioni creating a searchable index java devono 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 rilevanza. In questa guida percorreremo l’intero processo di configurazione di GroupDocs.Search per Java, dall’aggiunta di file alla ricerca all’aggiunta di directory al nodo, così potrai iniziare subito a indicizzare i tuoi documenti.

Risposte rapide

  • What is the primary purpose of GroupDocs.Search? Fornisce un motore scalabile, basato su Java, per indicizzare e cercare documenti su una rete distribuita.
  • Which version should I use? L’ultima versione stabile (ad es., 25.4) è consigliata per nuovi progetti.
  • Do I need a license? È disponibile una prova gratuita di 30 giorni; è necessaria una licenza permanente per l’uso in produzione.
  • Can I add both files and whole directories? Sì – usa gli helper addFiles e addDirectories per ingerire i contenuti.
  • What Java version is required? Java 8 o superiore, con Maven per la gestione delle dipendenze.

Cos’è “create searchable index 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 il lavoro pesante, permettendoti di concentrarti sull’alimentazione dei documenti e sulla messa a punto del comportamento di ricerca.

Perché usare GroupDocs.Search per Java?

  • Scalable network architecture – Distribuisci più nodi che condividono il carico di indicizzazione.
  • Rich document format support – PDF, Word, Excel, PowerPoint, immagini e altro.
  • Event‑driven updates – Iscriviti agli eventi del nodo per mantenere l’indice aggiornato in tempo reale.
  • Simple Maven integration – Aggiungi poche righe a pom.xml e inizia a indicizzare.

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 per Java (download o Maven).

Configurazione di 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 della licenza

  • Free Trial: valutazione di 30 giorni.
  • Temporary License: Richiedi per test estesi.
  • Purchase: Necessario per le distribuzioni in produzione.

Inizializzazione di base

Crea un oggetto di configurazione che punta a una cartella dove verranno persistiti i file dell’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 searchable index java con GroupDocs.Search?

Di seguito suddividiamo 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 impostazione della rete

Configurare la rete di ricerca è il primo passo verso la costruzione di 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 dove verranno persistiti i dati dell’indice.
  • 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 create a searchable index java che scala orizzontalmente.

Funzione 3 – Sottoscrizione agli eventi del nodo

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 la 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 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.

Problemi comuni e soluzioni

ProblemaMotivoSoluzione
No documents appear in search resultsIndex not committedCall node.getIndexer().commit() after adding files.
Port conflict errorAnother service uses basePortChoose a different basePort or verify free ports.
Unsupported file formatLibrary lacks parserEnsure the file extension is supported or add a custom extractor.

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 il basePath a una cartella montata in rete o a uno storage cloud montato localmente.

Q: Come aggiorno l’indice quando un file cambia?
A: Iscriviti agli eventi del nodo (vedi Funzione 3) e chiama nuovamente addFiles o addDirectories per i percorsi modificati.

Q: C’è 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 avvia automaticamente l’indicizzazione; è necessario eseguire il commit solo se differisci l’operazione.

Q: Quali formati di documento sono supportati di default?
A: PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML e molti tipi di immagine. Consulta la documentazione ufficiale per l’elenco completo.


Ultimo aggiornamento: 2025-12-26
Testato con: GroupDocs.Search per Java 25.4
Autore: GroupDocs