Jak optimalizovat shardy v GroupDocs.Search pro Java: Komplexní průvodce

Efektivní vyhledávání dokumentů je nezbytné pro vývojáře a firmy, které spravují velké datové sady nebo potřebují rychlé interní vyhledávání. V tomto tutoriálu se naučíte how to configure search network java, jak indexovat a dotazovat dokumenty a přesné kroky k optimize shards pro maximální výkon. Také se podíváme na reálné příklady použití, běžné úskalí a praktické tipy, jak udržet vaše vyhledávací uzly v hladkém chodu.

Rychlé odpovědi

  • Co je optimalizace shardů? Přeskupuje data indexu, aby urychlila dotazy a snížila úložnou zátěž.
  • Jak nakonfigurovat vyhledávací síť? Definujte základní adresář a port, poté nasazujte uzly pomocí poskytovaného API.
  • Jak provést textové vyhledávání? Použijte TextSearchInNetwork.searchAll s vaším řetězcem dotazu.
  • Jak indexovat dokumenty v Javě? Přidejte adresáře dokumentů do hlavního uzlu pomocí IndexingDocuments.addDirectories.
  • Jak řešit konflikty portů? Změňte proměnnou basePort na nepoužívaný port ve vašem počítači.

Jak nakonfigurovat vyhledávací síť

Configuration ukládá všechna nastavení potřebná k spuštění sítě GroupDocs.Search, jako je umístění složky indexu a komunikační port.
SearchNetwork orchestruje uzly, zajišťuje indexování a distribuci dotazů.

Načtěte své vyhledávací nastavení, nastavte základní cestu dokumentů, vyberte volný port a spusťte síť — vše během několika řádků kódu. Tato přímá odpověď vysvětluje celý proces v méně než 70 slovech: Create a Configuration object, set basePath a basePort, pak zavolejte SearchNetwork.start(configuration). Síť automaticky spustí hlavní uzel a všechny potřebné pracovní uzly, připravené přijímat požadavky na indexování.

Definiční kotva

Configuration je hlavní třída, která ukládá všechna nastavení potřebná k spuštění sítě GroupDocs.Search, jako je umístění složky indexu a komunikační port.

Aby se předešlo strašlivé chybě „port already in use“, nejprve ověřte, že zvolený port je volný (např. pomocí netstat nebo jednoduchého socket testu) před inicializací sítě.

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

Jak indexovat dokumenty v Javě

IndexingDocuments je pomocná třída, která zjednodušuje přidávání více adresářů do vyhledávacího uzlu a spouští indexovací pipeline.

Přidejte své složky s dokumenty do hlavního uzlu a nechte indexer je procházet. Direct answer: Zavolejte IndexingDocuments.addDirectories(masterNode, List.of("C:/Docs", "C:/MoreDocs")) a poté vyvolejte masterNode.index(); engine vytvoří prohledávatelné shardy pro každou poskytnutou složku. Tento přístup se škáluje horizontálně — přidejte více uzlů a stejná metoda automaticky rozděluje zátěž.

Definiční kotva

IndexingDocuments je pomocná třída, která zjednodušuje přidávání více adresářů do vyhledávacího uzlu a spouští indexovací pipeline.

String basePath = "YOUR_DOCUMENT_DIRECTORY/OptimizingShards/";
int basePort = 49132; // Adjust if necessary

Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);

Jak provést textové vyhledávání

TextSearchInNetwork poskytuje statické pomocné metody pro rozeslání textového dotazu všem uzlům v síti a agregaci výsledků.
SearchResult obsahuje ID nalezeného dokumentu, úryvek a skóre relevance.

Spusťte dotaz napříč všemi shardy jedním voláním metody. Direct answer: Použijte TextSearchInNetwork.searchAll("your query", searchNetwork); metoda vrátí kolekci objektů SearchResult obsahujících ID dokumentů, úryvky a skóre relevance. Můžete dále filtrovat výsledky podle jazyka, typu souboru nebo vlastních metadat bez psaní dalšího kódu.

Definiční kotva

TextSearchInNetwork poskytuje statické pomocné metody, které rozesílají textový dotaz všem uzlům v síti a agregují výsledky.

String basePath = "YOUR_DOCUMENT_DIRECTORY/OptimizingShards/";
int basePort = 49132; // Change this if you encounter a network port issue

Jak řešit konflikty portů

Pokud je výchozí port (49132) obsazen, jednoduše vyberte jiný volný port a aktualizujte pole basePort před spuštěním sítě. Direct answer: Změňte int basePort = 49132; na nepoužívanou hodnotu, např. 49133, přebuildujte a restartujte; síť se připojí k novému portu, aniž by ovlivnila existující uzly.

Tip: Uchovávejte malý konfigurační soubor (např. search-config.properties), abyste mohli změnit port bez překladu.

Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);

Předpoklady

Než začneme, ujistěte se, že máte následující předpoklady připravené:

Požadované knihovny, verze a závislosti

Pro implementaci tohoto řešení zahrňte knihovnu GroupDocs.Search pomocí Maven přidáním následující konfigurace do souboru pom.xml:

SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchNetworkNode masterNode = nodes[0];

Alternativně stáhněte nejnovější verzi z GroupDocs.Search for Java releases.

Požadavky na nastavení prostředí

  • Java Development Kit (JDK) 8 nebo novější.
  • Oprávnění sítě, která umožňují navázání na zvolený basePort.
  • Dostatečný diskový prostor pro soubory indexu (každý shard může zabírat ~10 MB na 1 000 dokumentů).

Předpoklady znalostí

Základní pochopení Javy, objektově orientovaného programování a zpracování výjimek vám pomůže plynule sledovat příklady.

Nastavení GroupDocs.Search pro Java

Pro zahájení používání GroupDocs.Search ve vašem projektu postupujte podle těchto kroků:

  1. Add the Dependency: Jak je uvedeno výše, přidejte potřebnou Maven závislost do svého projektu nebo stáhněte přímo ze stránky s vydáními.
  2. License Acquisition:
    • Free trial – není vyžadován licenční klíč, ale použití je omezeno na 500 dokumentů za den.
    • Temporary license – požádejte o 30‑denní zkušební klíč na GroupDocs Temporary License.
    • Full license – zakupte produkční licenci pro neomezený přístup a prioritní podporu.
  3. Basic Initialization and Setup:
    Inicializujte konfiguraci pomocí třídy Configuration, nastavte základní cestu pro dokumenty a specifikujte číslo portu:
SearchNetworkNodeEvents.subscribe(masterNode);

Průvodce implementací

Nyní prozkoumejme implementaci klíčových funkcí pomocí GroupDocs.Search Java.

Funkce: Konfigurace vyhledávací sítě

Overview: Nastavení vyhledávací sítě zahrnuje definování adresáře s dokumenty a jeho konfiguraci s konkrétním portem pro komunikaci mezi uzly.

Krok 1: Definujte adresáře dokumentů a port

DocumentDirectory je jednoduchý držák pro absolutní cestu ke složce, kterou chcete indexovat. Poskytněte jeden nebo více cest do konfigurace.

IndexingDocuments.addDirectories(masterNode, "YOUR_DOCUMENT_DIRECTORY/DocumentsPath");
IndexingDocuments.addDirectories(masterNode, "YOUR_DOCUMENT_DIRECTORY/DocumentsPath2");

Krok 2: Konfigurujte vyhledávací síť

Vytvořte konfigurační objekt pomocí definovaných cest:

TextSearchInNetwork.searchAll(masterNode, "ligula", false);

Funkce: Nasazení uzlů vyhledávací sítě

Overview: Nasazujte uzly pro efektivní zpracování vyhledávání dokumentů napříč vaší sítí.

Krok 1: Nasazení uzlů pomocí konfigurace

Nasazujte uzly vyhledávací sítě a identifikujte hlavní uzel pro centralizovanou správu:

public static void optimizeShards(SearchNetworkNode node) {
    Indexer indexer = node.getIndexer();
    OptimizeOptions options = new OptimizeOptions();
    indexer.optimize(options);
}

optimizeShards(masterNode);

// Perform a second text search to observe optimization effects
TextSearchInNetwork.searchAll(masterNode, "ligula", false);

Funkce: Přihlášení k událostem uzlů sítě

Overview: Monitorujte svou vyhledávací síť přihlášením k událostem, které vás upozorní na důležité změny nebo akce.

Krok 1: Přihlášení k událostem hlavního uzlu

SearchNetworkEventListener vám umožní reagovat na dokončení indexování, selhání uzlu nebo optimalizace shardů.

CODE_BLOCK_PLACEHOLDER_9_END

Funkce: Indexování dokumentů v uzlech sítě

Overview: Přidejte adresáře obsahující dokumenty do procesu indexování pro efektivní vyhledávání.

Krok 1: Přidání adresářů dokumentů do procesu indexování

Předávejte seznam cest ke složkám hlavnímu uzlu; engine vytvoří samostatný shard pro každou složku, což umožní paralelní provádění dotazů.

CODE_BLOCK_PLACEHOLDER_10_END

Funkce: Textové vyhledávání v uzlech sítě

Overview: Proveďte textové vyhledávání napříč všemi indexovanými dokumenty ve vaší vyhledávací síti.

Krok 1: Proveďte textové vyhledávání

Vyvolejte statickou pomocnou metodu pro spuštění dotazu a získání odpovídajících dokumentů se skóre relevance.

CODE_BLOCK_PLACEHOLDER_11_END

Funkce: Optimalizace shardů

Overview: Zlepšete výkon optimalizací shardů v indexeru vašeho uzlu vyhledávací sítě.

Krok 1: Optimalizace shardů indexeru

Optimalizujte shardy pro zlepšení efektivity vyhledávání (tady opravdu záleží na how to optimize shards):

CODE_BLOCK_PLACEHOLDER_12_END

Praktické aplikace

GroupDocs.Search pro Java lze použít v různých reálných scénářích, z nichž každý těží z optimalizace shardů:

  1. Enterprise Document Management – Zpracovává archivy >10 TB s podsekundovými časy dotazů po optimalizaci shardů.
  2. E‑commerce Platforms – Umožňuje vyhledávání produktů napříč 1 milionem SKU, snižuje latenci až o 45 % při optimalizovaných shardech.
  3. Legal Firms – Načítá soudní spisy z 200 GB repozitářů za méně než 200 ms.
  4. Library Systems – Podporuje katalogové vyhledávání pro 500 k digitálních knih s efektivním využitím paměti.
  5. Content Management Systems (CMS) – Umožňuje okamžité objevování obsahu pro multi‑site nasazení s více než 2 miliony stránek.

Úvahy o výkonu

Pro zajištění optimálního výkonu vaší implementace GroupDocs.Search:

  • Regularly optimize shards – Spouštění optimizeShards() po každých 10 GB nových dat snižuje dobu odezvy dotazů o 30‑50 %.
  • Monitor memory usage – Udržujte heap JVM pod 75 % fyzické RAM; povolte G1GC pro velké indexy.
  • Use incremental indexing – Přidávejte pouze změněné soubory, abyste se vyhnuli úplnému přeindexování.
  • Leverage multi‑node scaling – Přidejte pracovní uzly pro distribuci shardů; každý další uzel může zvýšit propustnost o ~20 % pro zatížení čtením.

Časté problémy a řešení

ProblémSymptomŘešení
Konflikt portu při spuštěníjava.net.BindException: Address already in useZměňte basePort na nepoužívanou hodnotu; ověřte pomocí netstat -ano.
Chyby nedostatku paměti během optimalizacejava.lang.OutOfMemoryError: Java heap spaceZvyšte flag JVM -Xmx nebo spusťte optimalizaci na dedikovaném uzlu s více RAM.
Chybějící dokumenty ve výsledcích vyhledáváníŽádné výsledky po indexováníUjistěte se, že adresáře jsou správně přidány pomocí IndexingDocuments.addDirectories a že masterNode.index() dokončil bez výjimek.
Zastaralé shardy po hromadném mazáníSmazané soubory se stále zobrazujíSpusťte optimizeShards(), aby se sloučily segmenty a odstranily tombstony.

Často kladené otázky

Q: Jak optimalizace shardů ovlivňuje rychlost dotazů?
A: Optimalizace shardů komprimuje index, snižuje diskové I/O a typicky přináší 30‑50 % rychlejší odpovědi na dotazy u velkých datových sad.

Q: Je bezpečné spouštět optimizeShards na živém uzlu?
A: Ano, operace je navržena tak, aby běžela bez výpadku, ale doporučuje se plánovat během období nízkého provozu pro indexy větší než 20 GB.

Q: Mohu přizpůsobit OptimizeOptions?
A: Určitě. Můžete nastavit parametry jako maxSegmentSize nebo mergeFactor pro jemné doladění procesu optimalizace.

Q: Co mám dělat, pokud během optimalizace narazím na IOException?
A: Ověřte oprávnění souborového systému, zajistěte dostatek volného místa na disku a potvrďte, že žádný jiný proces neblokuje soubory indexu.

Q: Získává optimalizace shardů také zpět místo po smazaných dokumentech?
A: Ano, optimalizátor sloučí segmenty a odstraní tombstony, čímž uvolní místo obsazené smazanými dokumenty.

Závěr

Podle tohoto komplexního průvodce nyní víte, jak configure search network java, indexovat dokumenty, spouštět textové dotazy a co je nejdůležitější, optimize shards, aby byl výkon vyhledávání ostrý jako břitva. Použijte tyto vzory v jakémkoli Java‑založeném podnikovém vyhledávacím řešení a uvidíte měřitelné zlepšení latence, škálovatelnosti a využití zdrojů. Další kroky: prozkoumejte pokročilé funkce jako vlastní analyzátory, faceted search a integraci s poskytovateli cloudového úložiště.


Poslední aktualizace: 2026-05-17
Testováno s: GroupDocs.Search 25.4 for Java
Autor: GroupDocs

Související tutoriály