Hur man konfigurerar GroupDocs Search Network för Java

I dagens snabbrörliga digitala miljö är configure groupdocs search network‑färdigheter avgörande för alla organisationer som behöver söka igenom miljontals dokument snabbt och pålitligt. Ett välkonfigurerat söknätverk sprider indexerings‑ och frågelaster över flera JVM‑noder, håller svarstiderna låga och garanterar hög tillgänglighet. Denna handledning guidar dig genom varje steg— från Maven‑installation och licensaktivering till noddistribution, händelseprenumeration, dokumentindexering och till och med bildbaserad sökning— så att du kan bygga ett produktionsklart GroupDocs.Search‑nätverk i Java.

Snabba svar

  • Vad är det primära syftet med ett söknätverk? Att distribuera indexerings‑ och frågelast över flera noder för bättre skalbarhet och pålitlighet.
  • Vilken port använder GroupDocs.Search som standard? Exemplet använder port 49120, men du kan välja vilken ledig port som helst.
  • Kan jag lägga till eller ta bort noder utan driftstopp? Ja—noder kan distribueras eller tas bort dynamiskt.
  • Behöver jag en licens för produktion? En full licens krävs för produktionsanvändning; provlicenser finns tillgängliga för utvärdering.
  • Stöds bildsökning direkt ur lådan? Ja—GroupDocs.Search tillhandahåller inbyggd bildhash‑jämförelse.

Vad är ett söknätverk?

En SearchNetworkNode är en individuell nod i klustret som hostar en kopia av det delade indexet och bearbetar sökförfrågningar. Ett search network är en samling av sammankopplade SearchNetworkNode‑instanser som delar indexeringsinformation och svarar på frågor gemensamt. Denna arkitektur låter dig hantera massiva dokumentsamlingar samtidigt som svarstiderna hålls låga, och den möjliggör automatisk failover om en nod går offline.

Varför använda GroupDocs.Search för Java?

Utrusta din Java‑applikation med en sökmotor som kan configure groupdocs search network på några minuter, skala horisontellt och stödja över 30 filformat—inklusive PDF, DOCX, XLSX, PPTX och vanliga bildtyper. Prestandatester visar att ett kluster med tre noder kan indexera 500 000 dokument på under 30 minuter på standard serverhårdvara, medan frågelatensen hålls under 200 ms även under tung samtidig belastning.

Förutsättningar

  • JDK 8+ installerat på varje maskin som ska köra en nod.
  • En IDE såsom IntelliJ IDEA eller Eclipse för enkel projektadministration.
  • Maven för beroendehantering.
  • Grundläggande kunskap om Java‑nätverk (TCP‑portar, brandväggar) och multitrådningskoncept.

Nödvändiga bibliotek och beroenden

Lägg till GroupDocs‑arkivet och beroendet i din 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>

Alternativt, ladda ner den senaste versionen från GroupDocs.Search for Java releases.

Installera GroupDocs.Search för Java

Installation via Maven

Maven‑snutten ovan hämtar biblioteket till ditt projekt automatiskt.

Licensförvärv

  • Free Trial – utforska kärnfunktioner utan kreditkort.
  • Temporary License – förlängd testperiod för interna pilotprojekt.
  • Full License – produktionsklar, obegränsad användning och prioriterad support.

Grundläggande initiering och konfiguration

Klassen SearchNetworkDeployment orkestrerar skapandet och hanteringen av söklustret, hanterar nodlivscykler och delade resurser. Innan du kan interagera med någon nod måste du skapa ett SearchNetworkDeployment‑objekt och peka det mot en delad indexmapp. Följande kodblock (bevarat från den ursprungliga handledningen) visar den minsta uppstarten:

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.");
    }
}

Implementeringsguide

Vi kommer nu att gå igenom varje kärnuppgift, med tydliga steg‑för‑steg‑förklaringar som föregår de ursprungliga kodplatshållarna.

Hur man distribuerar noder i ett söknätverk

Att distribuera flera noder sprider arbetsbelastningen och förbättrar fel tolerans. En SearchNetworkNode representerar en individuell JVM‑instans som deltar i söklustret, hanterar indexering och frågeförfrågningar. Genom att starta flera noder på på varandra följande portar skapar du ett motståndskraftigt nätverk där varje nod kan betjäna klientanrop och dela det gemensamma indexet.

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.");
    }
}

Hur man prenumererar på händelser

Händelseprenumeration ger dig insyn i realtid om nodhälsa, indexeringsframsteg och fel. Klassen SearchNetworkEvents tillhandahåller en uppsättning återanrop som triggas för betydande åtgärder såsom slutförd indexering, nodfel eller anpassade meddelanden. Att registrera lyssnare på master‑ eller worker‑noder möjliggör realtidsövervakning och automatiska svar för att hålla nätverket i drift utan problem.

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.");
    }
}

Hur man indexerar dokument

Effektiv indexering är ryggraden för snabba sökresultat. När du lägger till kataloger till master‑noden skannar motorn varje fil, extraherar sökbart innehåll och lagrar det i den delade indexstrukturen. Denna process kan köras inkrementellt, uppdaterar endast ändrade filer, vilket minskar I/O‑belastning och säkerställer att frågor alltid speglar de senaste dokumentversionerna.

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.");
    }
}

Hur man utför en bildsökning

GroupDocs.Search stödjer bildhash‑jämförelse, vilket låter dig hitta visuellt liknande resurser. Klassen SearchImage kapslar in en bildfil och beräknar en perceptuell hash som kan matchas mot hashvärden lagrade i indexet. Genom att ange en maximal hash‑skillnad styr du toleransen för visuell likhet, vilket möjliggör pålitlig upptäckt av dubbletter eller relaterade bilder i hela arkivet.

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);
    }
}

Hur man konfigurerar nätverksportar

Om din miljö redan använder port 49120, kan du ändra den till någon ledig TCP‑port. Parametern basePort bestämmer startportnumret för klustret, och varje efterföljande nod ökar detta värde automatiskt. Säkerställ att den valda porten är öppen i din brandvägg, inte upptagen av andra tjänster, och är konsekvent konfigurerad på alla noder för att upprätthålla sömlös kommunikation.

int customPort = 50000; // Example of a custom port.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, customPort);

Vanliga problem & felsökning

SymptomTrolig orsakÅtgärd
Noder startar intePortkonfliktVälj en annan basePort och uppdatera brandväggsregler.
Indexering är långsamOtillräcklig I/O‑bandbreddAnvänd SSD‑lagring och aktivera inkrementell indexering.
Händelseprenumeration avfyras inteSaknad registrering av händelsehanterareSäkerställ att SearchNetworkEvents.subscribe(node) anropas innan någon indexering påbörjas.
Bildsökning ger inga resultatHash‑skillnad för lågÖka den tillåtna hash‑skillnaden (t.ex. från 4 till 8).

Vanliga frågor

Q: Hur optimerar jag indexeringsprestanda i ett GroupDocs.Search‑nätverk?
A: Använd inkrementell indexering, lagra indexet på snabba SSD‑er och tilldela tillräckligt heap‑minne till JVM.

Q: Kan jag lägga till eller ta bort noder utan att starta om hela söknätverket?
A: Ja—noder kan distribueras eller tas bort dynamiskt. Efter att ha lagt till en nod, anropa SearchNetworkDeployment.deploy igen för att uppdatera klustervyn.

Q: Hur förbättrar händelseprenumeration nätverkshanteringen?
A: Prenumererade händelser ger realtidsvarningar för nodstatusändringar, indexeringsframsteg och fel, vilket möjliggör proaktiv felsökning.

Q: Är det möjligt att söka i olika dokumentformat samtidigt?
A: Absolut. GroupDocs.Search stödjer PDF‑filer, Word, Excel, PowerPoint, bilder och många andra format i en enda fråga.

Q: Hur säker är datan i ett GroupDocs.Search‑nätverk?
A: Säkerheten beror på din infrastruktur. Implementera SSL/TLS för nodkommunikation, begränsa nätverksåtkomst och följ bästa praxis för dataskydd.


Senast uppdaterad: 2026-06-27
Testat med: GroupDocs.Search 25.4 för Java
Författare: GroupDocs

Relaterade handledningar