Jak skonfigurować sieć wyszukiwania GroupDocs dla Java

W dzisiejszym dynamicznie zmieniającym się środowisku cyfrowym, configure groupdocs search network umiejętności są niezbędne dla każdej organizacji, która musi szybko i niezawodnie przeszukiwać miliony dokumentów. Dobrze skonfigurowana sieć wyszukiwania rozkłada obciążenia indeksowania i zapytań na wiele węzłów JVM, utrzymuje niskie czasy odpowiedzi i zapewnia wysoką dostępność. Ten samouczek przeprowadzi Cię przez każdy krok — od konfiguracji Maven i aktywacji licencji po wdrażanie węzłów, subskrypcję zdarzeń, indeksowanie dokumentów oraz wyszukiwanie oparte na obrazach — abyś mógł zbudować gotową do produkcji sieć GroupDocs.Search w Javie.

Szybkie odpowiedzi

  • Jaki jest podstawowy cel sieci wyszukiwania? Aby rozłożyć obciążenie indeksowaniem i zapytaniami na wiele węzłów w celu lepszej skalowalności i niezawodności.
  • Który port domyślnie używa GroupDocs.Search? Przykład używa portu 49120, ale możesz wybrać dowolny wolny port.
  • Czy mogę dodawać lub usuwać węzły bez przestoju? Tak — węzły mogą być dynamicznie wdrażane lub wycofywane.
  • Czy potrzebuję licencji do produkcji? Pełna licencja jest wymagana do użytku produkcyjnego; licencje próbne są dostępne do oceny.
  • Czy wyszukiwanie obrazów jest obsługiwane od razu? Tak — GroupDocs.Search zapewnia wbudowane porównywanie hashów obrazów.

Co to jest sieć wyszukiwania?

SearchNetworkNode to indywidualny węzeł w klastrze, który przechowuje kopię współdzielonego indeksu i przetwarza żądania wyszukiwania. Sieć wyszukiwania to zbiór połączonych ze sobą instancji SearchNetworkNode, które współdzielą informacje o indeksowaniu i wspólnie odpowiadają na zapytania. Ta architektura pozwala obsługiwać ogromne kolekcje dokumentów przy niskich czasach odpowiedzi oraz umożliwia automatyczne przełączanie awaryjne, gdy któryś węzeł przestanie być dostępny.

Dlaczego używać GroupDocs.Search dla Javy?

Obciąż swoją aplikację Java silnikiem wyszukiwania, który może configure groupdocs search network w kilka minut, skalować się poziomo i obsługiwać ponad 30 formatów plików — w tym PDF, DOCX, XLSX, PPTX oraz popularne typy obrazów. Testy wydajności wykazują, że klaster trzech węzłów może zaindeksować 500 000 dokumentów w mniej niż 30 minut na standardowym sprzęcie serwerowym, a opóźnienie zapytań pozostaje poniżej 200 ms nawet przy dużym obciążeniu równoczesnym.

Wymagania wstępne

  • JDK 8+ zainstalowany na każdym komputerze, który będzie uruchamiał węzeł.
  • IDE, takie jak IntelliJ IDEA lub Eclipse, ułatwiające zarządzanie projektem.
  • Maven do rozwiązywania zależności.
  • Podstawowa znajomość sieci w Javie (porty TCP, zapory) oraz koncepcji wielowątkowości.

Wymagane biblioteki i zależności

Dodaj repozytorium GroupDocs i zależność do swojego 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>

Alternatywnie, pobierz najnowszą wersję z GroupDocs.Search for Java releases.

Konfigurowanie GroupDocs.Search dla Java

Instalacja za pomocą Maven

Powyższy fragment Maven automatycznie pobiera bibliotekę do Twojego projektu.

Uzyskiwanie licencji

  • Free Trial – wypróbuj podstawowe funkcje bez karty kredytowej.
  • Temporary License – wydłużony okres testowy dla wewnętrznych pilotaży.
  • Full License – gotowa do produkcji, nieograniczone użycie i wsparcie priorytetowe.

Podstawowa inicjalizacja i konfiguracja

Klasa SearchNetworkDeployment koordynuje tworzenie i zarządzanie klastrem wyszukiwania, obsługując cykl życia węzłów oraz zasoby współdzielone. Zanim będziesz mógł komunikować się z jakimkolwiek węzłem, musisz utworzyć obiekt SearchNetworkDeployment i wskazać mu folder współdzielonego indeksu. Poniższy blok kodu (zachowany z oryginalnego samouczka) pokazuje minimalny bootstrap:

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

Przewodnik po implementacji

Teraz przejdziemy do każdego kluczowego zadania, używając jasnych, krok po kroku wyjaśnień poprzedzających oryginalne miejsca na kod.

Jak wdrażać węzły w sieci wyszukiwania

Wdrażanie wielu węzłów rozkłada obciążenie i zwiększa odporność na awarie. SearchNetworkNode reprezentuje pojedynczą instancję JVM, która uczestniczy w klastrze wyszukiwania, obsługując żądania indeksowania i zapytań. Uruchamiając kilka węzłów na kolejnych portach, tworzysz odporną sieć, w której każdy węzeł może obsługiwać wywołania klientów i współdzielić wspólny indeks.

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

Jak subskrybować zdarzenia

Subskrypcja zdarzeń daje Ci bieżący wgląd w stan węzłów, postęp indeksowania i błędy. Klasa SearchNetworkEvents udostępnia zestaw wywołań zwrotnych, które są uruchamiane przy istotnych akcjach, takich jak zakończenie indeksowania, awarie węzłów czy własne powiadomienia. Rejestrowanie nasłuchiwaczy na węźle głównym lub roboczym umożliwia monitorowanie w czasie rzeczywistym i automatyczne reakcje, zapewniając płynne działanie sieci.

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

Jak indeksować dokumenty

Efektywne indeksowanie jest podstawą szybkich wyników wyszukiwania. Gdy dodajesz katalogi do węzła głównego, silnik skanuje każdy plik, wyodrębnia treść możliwą do przeszukania i zapisuje ją we współdzielonej strukturze indeksu. Proces może działać przyrostowo, aktualizując jedynie zmienione pliki, co zmniejsza obciążenie I/O i zapewnia, że zapytania zawsze odzwierciedlają najnowsze wersje dokumentów.

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

Jak wykonać wyszukiwanie obrazów

GroupDocs.Search obsługuje porównywanie hashów obrazów, umożliwiając znajdowanie wizualnie podobnych zasobów. Klasa SearchImage kapsułkuje plik obrazu i oblicza percepcyjny hash, który może być dopasowany do hashów przechowywanych w indeksie. Określając maksymalną różnicę hashów, kontrolujesz tolerancję podobieństwa wizualnego, co pozwala na niezawodne wykrywanie duplikatów lub powiązanych obrazów w repozytorium.

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

Jak skonfigurować porty sieciowe

Jeśli Twoje środowisko już używa portu 49120, możesz zmienić go na dowolny wolny port TCP. Parametr basePort określa początkowy numer portu dla klastra, a każdy kolejny węzeł automatycznie zwiększa tę wartość. Upewnij się, że wybrany port jest otwarty w zaporze, nie jest zajęty przez inne usługi i jest konsekwentnie skonfigurowany we wszystkich węzłach, aby utrzymać płynną komunikację.

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

Typowe problemy i rozwiązywanie

ObjawPrawdopodobna przyczynaRozwiązanie
Węzły nie uruchamiają sięKonflikt portówWybierz inny basePort i zaktualizuj reguły zapory.
Indeksowanie jest wolneNiewystarczająca przepustowość I/OUżyj pamięci SSD i włącz indeksowanie przyrostowe.
Subskrypcja zdarzeń nie działaBrak rejestracji obsługi zdarzeńUpewnij się, że SearchNetworkEvents.subscribe(node) jest wywoływane przed rozpoczęciem indeksowania.
Wyszukiwanie obrazów nie zwraca wynikówRóżnica hashów jest zbyt małaZwiększ dopuszczalną różnicę hashów (np. z 4 do 8).

Najczęściej zadawane pytania

Q: Jak zoptymalizować wydajność indeksowania w sieci GroupDocs.Search?
A: Użyj indeksowania przyrostowego, przechowuj indeks na szybkich SSD, i przydziel wystarczającą pamięć heap dla JVM.

Q: Czy mogę dodawać lub usuwać węzły bez ponownego uruchamiania całej sieci wyszukiwania?
A: Tak — węzły mogą być dynamicznie wdrażane lub wycofywane. Po dodaniu węzła wywołaj ponownie SearchNetworkDeployment.deploy, aby odświeżyć widok klastra.

Q: Jak subskrypcja zdarzeń poprawia zarządzanie siecią?
A: Zasubskrybowane zdarzenia dostarczają alerty w czasie rzeczywistym o zmianach statusu węzłów, postępie indeksowania i błędach, umożliwiając proaktywne rozwiązywanie problemów.

Q: Czy można jednocześnie wyszukiwać różne formaty dokumentów?
A: Oczywiście. GroupDocs.Search obsługuje PDF, Word, Excel, PowerPoint, obrazy i wiele innych formatów w jednym zapytaniu.

Q: Jak bezpieczne są dane w sieci GroupDocs.Search?
A: Bezpieczeństwo zależy od Twojej infrastruktury. Wdroż SSL/TLS dla komunikacji między węzłami, ogranicz dostęp do sieci i stosuj najlepsze praktyki ochrony danych.


Ostatnia aktualizacja: 2026-06-27
Testowano z: GroupDocs.Search 25.4 for Java
Autor: GroupDocs

Powiązane samouczki