Jak implementovat java full text search pomocí GroupDocs.Search
V éře aplikací řízených daty je java full text search nezbytný pro převod obrovských kolekcí dokumentů na okamžitě prohledávatelné znalostní báze. Ať už budujete podnikový portál nebo lehkou desktopovou utilitu, dobře nakonfigurovaná vyhledávací síť může snížit latenci dotazů ze sekund na milisekundy a udržet výsledky relevantní i při růstu dat. Tento tutoriál vás provede nasazením GroupDocs.Search for Java, přidáváním souborů do vyhledávání, konfigurací adresářů na uzlech a povolením indexování v reálném čase, aby váš index zůstal aktuální bez ručního zásahu.
Proč je to důležité: Index java full text search snižuje latenci dotazů, škáluje s objemem dat a přináší výkonné full‑textové možnosti do jakéhokoli řešení založeného na Java — webových portálů, desktopových aplikací nebo cloudových mikroservis.
Rychlé odpovědi
- Jaký je hlavní účel GroupDocs.Search? Poskytuje škálovatelný java vyhledávač, který indexuje a prohledává dokumenty napříč distribuovanou sítí.
- Kterou verzi mám použít? Nejnovější stabilní verze (např. 25.4) je doporučena pro nové projekty.
- Potřebuji licenci? Je k dispozici 30‑denní bezplatná zkušební verze; pro produkční použití je vyžadována trvalá licence.
- Mohu přidat jak soubory, tak celé adresáře? Ano — použijte pomocníky
addFilesaaddDirectoriesk načtení obsahu. - Jaká verze Javy je požadována? Java 8 nebo vyšší, s Mavenem pro správu závislostí.
- Jak funguje indexování v reálném čase v Javě? Přihlášením k událostem uzlu můžete spouštět automatické přeindexování při změně souborů.
Co je „create searchable index java“?
Vytvoření prohledávatelného indexu v Javě znamená vytvořit datovou strukturu, která mapuje termíny na dokumenty, které je obsahují, a umožňuje rychlé full‑textové dotazy. GroupDocs.Search for Java abstrahuje těžkou práci, takže se můžete soustředit na načítání dokumentů a ladění chování vyhledávání.
Proč používat GroupDocs.Search pro Java?
GroupDocs.Search poskytuje java vyhledávač, který horizontálně škáluje, podporuje více než 50 vstupních a výstupních formátů a nabízí indexování řízené událostmi. Nasazením více uzlů se rozloží zátěž indexování, zatímco vestavěné kontroly zdraví udržují síť spolehlivou. Také poskytuje RESTful API a přizpůsobitelné analyzátory pro jemně doladěnou relevanci.
Požadavky
- JDK 8+ nainstalováno na vašem vývojovém počítači.
- IDE, například IntelliJ IDEA nebo Eclipse.
- Základní znalost Java a Maven.
- Přístup k knihovně GroupDocs.Search for Java (ke stažení nebo přes Maven).
Nastavení GroupDocs.Search pro Java
Maven závislost
Přidejte repozitář a závislost do vašeho 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>
Tip: Udržujte číslo verze aktuální kontrolou oficiální stránky vydání.
Můžete také stáhnout JAR přímo z oficiálního webu: GroupDocs.Search for Java releases.
Získání licence
- Free trial: 30‑denní zkušební verze.
- Temporary license: Požádejte o rozšířené testování.
- Purchase: Vyžadováno pro produkční nasazení.
Základní inicializace
Vytvořte konfigurační objekt, který ukazuje na složku, kde budou uloženy soubory indexu, a definuje základní komunikační port:
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
}
}
Jak vytvořit searchable index java pomocí GroupDocs.Search?
Načtěte objekt SearchConfiguration, spusťte SearchNetworkNode a zavolejte node.getIndexer().addFiles(...) pro naplnění indexu. Tento jednorázový vzor spustí plně funkční síť java full text search, připravenou okamžitě přijímat dotazy. Poté můžete škálovat přidáním dalších uzlů, které sdílejí stejnou základní cestu a rozsah portů.
Funkce 1 – konfigurace a nastavení sítě
Třída SearchConfiguration obsahuje všechna nastavení potřebná k vytvoření uzlu.
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– Adresář, kde budou data indexu uložena.basePort– Počáteční port; každý uzel bude inkrementovat od této hodnoty.
Funkce 2 – nasazení uzlů vyhledávací sítě
SearchNetworkNode představuje individuální indexovací službu, která může běžet na jakémkoli stroji.
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()};
}
}
SearchNetworkNode je hlavní běhová komponenta, která hostí index, zpracovává události přidání/odstranění a odpovídá na vyhledávací dotazy. Nasazením více uzlů můžete create java full text search clustery, které horizontálně škálují.
Funkce 3 – přihlášení k událostem uzlu
Aktualizace v reálném čase udržují index synchronizovaný se změnami souborového systému.
import com.groupdocs.search.scaling.*;
class SearchNetworkNodeEvents {
public static void subscribe(SearchNetworkNode node) {
// Logic to subscribe to the specified node's events
}
}
Poslechem událostí můžete automaticky spouštět přeindexování, když přijdou nové soubory, a dosáhnout event driven indexing bez ručních skriptů.
Funkce 4 – přidávání adresářů do uzlu sítě
Použijte tento pomocník k add directories to node, rekurzivně sbírající všechny podporované dokumenty.
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());
}
}
}
}
Funkce 5 – přidávání souborů do uzlu sítě
Když potřebujete jemnozrnné řízení, add files to search jednotlivě:
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();
}
}
}
addFiles je metoda, která přijímá seznam cest k souborům nebo streamů, což vám umožní indexovat dokumenty z cloudového úložiště, dočasných cache nebo paměťových streamů.
Běžné případy použití
- Enterprise document portals které potřebují okamžité vyhledávání napříč tisíci PDF a Office soubory.
- Legal e‑discovery platforms kde jsou nové důkazy neustále přidávány a musí být prohledávatelné v reálném čase.
- Content management systems které ukládají obrázky, prezentace a tabulky a vyžadují full‑textové vyhledávání.
Běžné problémy a řešení
| Problém | Důvod | Řešení |
|---|---|---|
| Žádné dokumenty se neobjevují ve výsledcích vyhledávání | Index nebyl potvrzen | Po přidání souborů zavolejte node.getIndexer().commit(). |
| Chyba konfliktu portu | Jiná služba používá basePort | Zvolte jiný basePort nebo ověřte volné porty. |
| Nepodporovaný formát souboru | Knihovna postrádá parser | Ujistěte se, že je přípona souboru podporována, nebo přidejte vlastní extraktor. |
Tipy pro řešení problémů
- Verify node health: Použijte vestavěný health‑check endpoint (
http://localhost:{port}/health) k ověření, že každý uzel běží. - Monitor memory usage: Velké dávky dokumentů mohou zvýšit paměť; indexujte v menších částech a periodicky zavolejte
commit(). - Check logs: GroupDocs.Search zapisuje podrobné logy do složky
basePath— prohlédněte je kvůli chybám parsování nebo časovým limitům sítě.
Často kladené otázky
Q: Můžu použít GroupDocs.Search v cloudové Java aplikaci?
A: Ano. Knihovna funguje s jakýmkoli Java runtime a můžete nastavit basePath na síťově připojený adresář nebo cloudové úložiště.
Q: Jak aktualizuji index, když se soubor změní?
A: Přihlaste se k událostem uzlu (viz Funkce 3) a znovu zavolejte addFiles nebo addDirectories pro upravené cesty.
Q: Existuje limit na počet uzlů, které mohu nasadit?
A: Prakticky je limit dán vaším hardwarem a šířkou pásma sítě. API neklade žádný pevný limit.
Q: Musím po přidání nových souborů restartovat uzly?
A: Ne. Přidání souborů spouští indexování automaticky; pouze pokud odložíte operaci, musíte provést commit.
Q: Jaké formáty dokumentů jsou podporovány přímo z krabice?
A: PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML a mnoho typů obrázků — celkem více než 50 formátů.
Q: Jak mohu povolit real‑time indexing java pro složku, která neustále přijímá nahrávání?
A: Implementujte sledovač souborového systému (např. java.nio.file.WatchService), který zavolá DirectoryAdder.addDirectories(node, path) vždy, když je detekován nový soubor.
Poslední aktualizace: 2026-09-27
Testováno s: GroupDocs.Search for Java 25.4
Autor: GroupDocs