Jak skonfigurować sieć GroupDocs.Search w Javie – Boost Search

W nowoczesnych, intensywnie wykorzystujących dane aplikacjach, how to configure GroupDocs poprawnie jest fundamentem dostarczania błyskawicznie szybkich, istotnych wyników wyszukiwania w ogromnych repozytoriach dokumentów. Niezależnie od tego, czy budujesz portal korporacyjny, bazę wiedzy czy katalog produktów, dobrze dopasowana sieć GroupDocs.Search pozwala na skalowanie w poziomie, wprowadzanie logiki synonimów i utrzymanie opóźnień pod kontrolą. W tym samouczku przeprowadzimy Cię przez każdy krok niezbędny do skonfigurowania, wdrożenia i dopracowania sieci GroupDocs.Search przy użyciu Javy, a także podamy praktyczne wskazówki dotyczące dodawania synonimów do indeksu oraz obsługi cyklu życia węzłów.

Szybkie odpowiedzi

  • Jaka jest główna korzyść z konfigurowania sieci GroupDocs.Search? Umożliwia rozproszone indeksowanie i zapytania, poprawiając wydajność i skalowalność.
  • Czy potrzebuję licencji do uruchomienia przykładów? Darmowa wersja próbna działa w środowisku deweloperskim; licencja komercyjna jest wymagana w produkcji.
  • Czy można dodać synonimy bez przebudowy indeksu? Tak — użyj słownika synonimów w czasie wykonywania, aby add synonyms to index.
  • Ile węzłów mogę wdrożyć? Możesz wdrożyć dowolną liczbę węzłów, zależnie od możliwości infrastruktury; każdy węzeł działa na własnym porcie.
  • Jaka wersja Javy jest wymagana? Obsługiwany jest JDK 8 lub nowszy, z pełną kompatybilnością do JDK 21.

Co to jest konfigurowanie sieci GroupDocs.Search?

GroupDocs.Search network to zbiór procesów JVM współpracujących w celu indeksowania i przeszukiwania wspólnego zestawu dokumentów. Składa się z węzła głównego, który koordynuje jeden lub więcej węzłów roboczych (shardów). Sieć abstrahuje podległą pamięć, więc pojedyncze zapytanie jest automatycznie rozgłaszane do każdego shardu, a wyniki są scalane przed zwróceniem do wywołującego.

Dlaczego konfigurować sieć GroupDocs.Search?

Konfigurowanie sieci GroupDocs.Search daje trzy konkretne korzyści: scalability, reliability i enhanced relevance. Rozkładając obciążenie indeksowania na nawet 20 węzłów, z których każdy obsługuje shard o wielkości 5 GB, możesz skrócić całkowity czas indeksowania o około 70 % w porównaniu z konfiguracją jednowęzłową. Dodanie słownika synonimów zwiększa recall o do 35 % dla zapytań używających alternatywnej terminologii, a redundancja węzłów zapewnia 99,9 % dostępności podczas okien konserwacyjnych.

Wymagania wstępne

  • Java Development Kit (JDK) 8 – 21 (dowolna wersja LTS)
  • Maven 3.5 + do budowania projektu
  • Znajomość podstawowej składni Java oraz zarządzania zależnościami Maven
  • Dostęp do biblioteki GroupDocs.Search for Java (dostępnej w Maven Central lub na oficjalnej stronie wydań)

Konfiguracja GroupDocs.Search dla Javy

Dodaj repozytorium i zależność do swojego pliku pom.xml Maven:

Poniższy fragment XML dodaje repozytorium GroupDocs.Search oraz zależność biblioteczną.

<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ę bezpośrednio z GroupDocs.Search for Java releases.

Uzyskiwanie licencji

  • Free Trial – Przeglądaj podstawowe funkcje bez kosztów.
  • Temporary License – Odblokuj pełne możliwości do krótkoterminowego testowania.
  • Commercial License – Wymagana przy wdrożeniach produkcyjnych i do uzyskania wsparcia premium.

Podstawowa inicjalizacja i konfiguracja

Utwórz prostą klasę Java, aby zweryfikować prawidłowe załadowanie biblioteki:

Klasa SampleInitializer demonstruje ładowanie silnika GroupDocs.Search.

import com.groupdocs.search.*;

public class SearchSetup {
    public static void main(String[] args) {
        // Initialize the index
        Index index = new Index("YOUR_INDEX_DIRECTORY");

        System.out.println("GroupDocs.Search is ready to use!");
    }
}

Przewodnik krok po kroku konfigurowania sieci GroupDocs.Search

1. Konfigurowanie sieci wyszukiwania

Zdefiniuj podstawowy folder dokumentów oraz początkowy port komunikacji węzłów.

SearchNetworkConfig przechowuje konfigurację węzłów sieci.

import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.configuring.*;

public class ConfigureSearchNetwork {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
        int basePort = 49128;

        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        
        // Configuration details and setup logic
    }
}
  • basePath – Katalog, w którym znajdują się słowniki (np. pliki synonimów).
  • basePort – Pierwszy port; kolejne węzły zwiększają go o jeden.

2. Wdrażanie węzłów sieci wyszukiwania

Uruchom wiele węzłów roboczych, które współdzielą tę samą konfigurację.

SearchNode reprezentuje pojedynczy węzeł w rozproszonej sieci.

import com.groupdocs.search.scaling.*;

public class DeploySearchNetworkNodes {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
        int basePort = 49128;
        Configuration configuration = new Configuration();

        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
        
        // Node deployment logic
    }
}

Każdy węzeł działa na własnym porcie (basePort + index) i przechowuje shard całego indeksu, co umożliwia równoległe przetwarzanie zarówno indeksowania, jak i wykonywania zapytań.

3. Subskrybowanie zdarzeń węzła

Monitoruj stan zdrowia, postęp indeksowania i warunki błędów, podłączając nasłuchiwacz zdarzeń do węzła głównego.

NetworkEventListener obsługuje wywołania zwrotne dla zdarzeń cyklu życia węzła.

import com.groupdocs.search.scaling.*;

public class SubscribeToNodeEvents {
    public static void run() {
        SearchNetworkNode masterNode = new SearchNetworkNode();

        SearchNetworkNodeEvents.subscribe(masterNode);
        
        // Event subscription logic
    }
}

Wywołania zwrotne pozwalają reagować na uruchomienie/wyłączenie węzła, zakończenie indeksowania oraz nieoczekiwane awarie, dając pełną obserwowalność rozproszonego systemu.

4. Dodawanie synonimów do indeksatora węzła

Zwiększ trafność, add synonyms to index w czasie wykonywania.

SynonymDictionary umożliwia dodawanie grup synonimów do indeksatora.

import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.*;

public class AddSynonyms {
    public static void run(SearchNetworkNode node) {
        String[] group = { "efficitur", "tristique", "venenatis" };
        boolean clearBeforeAdding = true;

        Indexer indexer = node.getIndexer();
        int[] indices = node.getShardIndices();
        SynonymDictionary dictionary = indexer.getSynonymDictionary(indices[0]);

        if (clearBeforeAdding) {
            dictionary.clear();
        }
        dictionary.addRange(new String[][] { group });

        indexer.setDictionary(dictionary);
        
        // Synonym addition logic
    }
}
  • group – Tablica terminów, które powinny być traktowane jako równoważne.
  • clearBeforeAdding – Ustaw na true, jeśli chcesz zastąpić istniejące wpisy.

5. Dodawanie katalogów do indeksowania

Powiedz węzłowi głównemu, które foldery zawierają dokumenty, które mają być przeszukiwalne.

Indexer.addDirectory rejestruje folder do indeksowania.

import com.groupdocs.search.scaling.*;
import com.groupdocs.search.examples.Utils;

public class AddDirectoriesForIndexing {
    public static void run(SearchNetworkNode masterNode) {
        String documentsPath = "YOUR_DOCUMENT_DIRECTORY/DocumentsPath";

        IndexingDocuments.addDirectories(masterNode, documentsPath);
        
        // Directory addition logic
    }
}

Metoda skanuje katalog rekurencyjnie i rozdziela pliki pomiędzy shardy, obsługując ponad 10 TB danych bez ładowania całych plików do pamięci.

6. Wykonywanie wyszukiwania tekstowego w sieci

Wykonaj zapytanie we wszystkich węzłach, opcjonalnie wymuszając zachowanie dopasowania dokładnego.

SearchEngine.search uruchamia zapytanie w sieci.

import com.groupdocs.search.scaling.*;

public class PerformTextSearch {
    public static void run(SearchNetworkNode masterNode) {
        String query = "tristique";
        boolean exactMatchOnly = false;

        TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
        exactMatchOnly = true;
        TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
        
        // Search execution logic
    }
}

Ustaw exactMatchOnly na true, gdy potrzebujesz ścisłego dopasowania terminów bez stemmingu, co może poprawić precyzję w scenariuszach wyszukiwania kodu nawet o 20 %.

7. Zamykanie węzłów sieci

Zwolnij zasoby w sposób kontrolowany po zakończeniu przetwarzania.

node.close() zamyka SearchNode i zwalnia zasoby.

import com.groupdocs.search.scaling.*;

public class CloseNetworkNodes {
    public static void run(SearchNetworkNode[] nodes) {
        for (SearchNetworkNode node : nodes) {
            node.close();
            
            // Node closure logic
        }
    }
}

Poprawne zamknięcie zapobiega wyciekom pamięci i utrzymuje JVM w dobrej kondycji, szczególnie w usługach działających długo, które recyklingują węzły w godzinach o niższym obciążeniu.

Praktyczne zastosowania

ScenariuszJak sieć pomaga
Wyszukiwanie w przedsiębiorstwieRozdziel indeksowanie na serwery w centrach danych dla korpusów o skali petabajtowej, osiągając podsekundowe opóźnienie zapytań przy ponad 100 M dokumentów.
Zarządzanie dokumentamiDodaj synonimy do indeksu, aby użytkownicy znajdowali dokumenty mimo różnej terminologii, zwiększając recall o do 35 %.
Katalog e‑commerceWdróż węzły specyficzne dla regionu, aby szybko obsługiwać lokalizowane wyszukiwania produktów, skracając średni czas odpowiedzi z 250 ms do 80 ms.
Zarządzanie treściąUtrzymuj treść przeszukiwalną, gdy redaktorzy dodają nowe pliki do określonych katalogów; sieć indeksuje przyrostowo bez przestojów.

Typowe problemy i rozwiązania

  • Port Conflicts – Upewnij się, że port każdego węzła (basePort + index) jest wolny; w razie potrzeby zmień basePort.
  • Synonym Not Applied – Sprawdź, czy po dodaniu terminów wywołałeś indexer.setDictionary(dictionary); w przeciwnym razie nowe synonimy nie będą brane pod uwagę podczas wyszukiwania.
  • Node Not Responding – Subskrybuj zdarzenia; szukaj wywołań zwrotnych NodeFailed, aby zdiagnozować problemy sieciowe.
  • Memory Leak on Close – Zawsze wywołuj node.close() dla każdego wdrożonego węzła; rozważ użycie bloku try‑with‑resources dla automatycznego sprzątania.

Najczęściej zadawane pytania

Q: Jak wdrożenie wielu węzłów poprawia wydajność wyszukiwania?
A: Każdy węzeł indeksuje fragment danych, co pozwala na równoległe przetwarzanie i zmniejsza opóźnienie zapytań, gdy obciążenie jest rozłożone na klaster.

Q: Czy mogę dodać synonimy bez ponownego indeksowania istniejących dokumentów?
A: Tak, możesz add synonyms to index w czasie wykonywania za pomocą słownika synonimów; zmiany wchodzą w życie natychmiast dla nowych zapytań.

Q: Czy subskrybowanie zdarzeń węzła jest obowiązkowe?
A: Nie jest wymagane do podstawowej pracy, ale subskrypcja zdarzeń zapewnia wgląd w stan zdrowia węzłów i pomaga szybko reagować na awarie.

Q: Jakie są najlepsze praktyki zarządzania zasobami węzłów?
A: Regularnie zamykaj nieużywane węzły, monitoruj zużycie pamięci JVM i recyklinguj węzły w godzinach o niższym obciążeniu, aby utrzymać optymalne zużycie zasobów.

Q: Czy GroupDocs.Search obsługuje formaty nienależące do tekstu, takie jak PDF‑y lub obrazy?
A: Zdecydowanie. Biblioteka wyodrębnia tekst z PDF‑ów, plików Office oraz wykonuje OCR na obrazach, co czyni je od razu przeszukiwalnymi.


Last Updated: 2026-07-16
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs

Powiązane samouczki