Mistrovství efektivního vyhledávání dokumentů pomocí GroupDocs.Search pro Java

Finding the right passage inside thousands of PDFs, Word files, or spreadsheets can feel like searching for a needle in a haystack. How to create index quickly and retrieve that needle is what makes a document‑search solution valuable. In this tutorial you’ll learn how to use GroupDocs.Search for Java, a high‑performance java search library, to create index, add documents to index, and extract text from documents in multiple formats such as files, streams, strings, and structured data. By the end you’ll have a production‑ready indexing pipeline that scales to large document collections while keeping memory usage low.

Rychlé odpovědi

  • Jaký je hlavní účel? To how to create index and retrieve document content instantly.
  • Kterou knihovnu bych měl použít? The GroupDocs.Search for Java java search library.
  • Mohu výstupní text uložit do souboru? Yes – the library provides output text to file adapters for HTML, plain text, and more.
  • Je podporováno strukturované extrahování? Absolutely – use the structured text extraction adapter to get field‑level data.
  • Potřebuji licenci? A trial license works for development; a permanent license is required for production deployments.

Co se naučíte

  • Jak how to create index a add documents to index pomocí GroupDocs.Search for Java.
  • Techniky pro output text to file, proudy, řetězce a strukturované formáty.
  • Tipy na optimalizaci výkonu, které udržují indexování rychlé a paměťově efektivní.
  • Reálné scénáře, kde tyto funkce vynikají, například úložiště právních smluv a archivy akademických prací.

Proč používat GroupDocs.Search pro Java?

GroupDocs.Search podporuje 50+ input and output formats – včetně DOCX, XLSX, PPTX, PDF, HTML a běžných typů obrázků – a může indexovat soubory o velikosti několika gigabajtů, aniž by načítal celý soubor do paměti. Benchmarky ukazují, že kolekci dokumentů o velikosti 1 GB lze indexovat za méně než 2 minuty na standardním 8‑jádrovém serveru, zatímco dotazy na vyhledávání vrací výsledky za méně než 100 ms.

Předpoklady

  • Java Development Kit (JDK) 8 nebo novější.
  • GroupDocs.Search for Java knihovna (zkušební nebo licencovaná).
  • Maven pro správu závislostí.
  • Základní znalost Java I/O.

Nastavení GroupDocs.Search pro Java

Nejprve přidejte Maven repozitář GroupDocs.Search a závislost do souboru pom.xml vašeho projektu. Tento krok zajistí, že knihovna bude dostupná na classpath.

Nastavení Maven
Přidejte následující konfigurace repozitáře a závislosti do souboru 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>

Pro ty, kteří preferují přímé stažení, můžete získat nejnovější verzi z GroupDocs.Search for Java releases.

Získání licence
Pro použití GroupDocs.Search v produkci získáte zkušební nebo trvalou licenci z oficiálního webu. Zkušební licence je neomezená pro vývoj a testování.

Jak vytvořit index v Javě s vlastními nastaveními

Index je hlavní třída, která představuje prohledávatelnou kolekci dokumentů.
IndexSettings konfiguruje možnosti, jako je komprese indexu.
CompressionLevel definuje úroveň komprese aplikovanou na uložený text.

Načtěte objekt Index s povolenou kompresí, nasměrujte jej na složku a přidejte všechny podporované soubory. Tento přímý odpovědní odstavec vám přesně říká, co dělat: vytvořte instanci Index pomocí new Index("indexFolder", new IndexSettings().setCompressionLevel(CompressionLevel.High)), pak zavolejte index.add("documentsFolder", true), aby se rekurzivně indexovaly všechny podporované soubory. Režim vysoké komprese snižuje velikost na disku až o 70 % při zachování rychlosti vyhledávání.

Vytvoření indexu je základem pro jakoukoli aplikaci založenou na vyhledávání. Níže uvedený příklad vás provede procesem, vysvětlí každé nastavení a ukáže, jak ověřit, že byl index úspěšně vytvořen.

Vytvoření indexu a indexování dokumentů

Přehled

Index třída je hlavní komponenta, která představuje prohledávatelnou kolekci dokumentů. Ukládá invertované indexy, slovníky termínů a metadata potřebná pro rychlé vyhledávání.

import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;

public class FeatureIndexCreation {
    public static void main(String[] args) {
        // Define the folder paths for indexing
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY + "/DocumentsPath";  // Adjust as needed

        // Creating an index settings instance with compression enabled
        IndexSettings settings = new IndexSettings();
        settings.setTextStorageSettings(new TextStorageSettings(Compression.High));

        // Creating the index in the specified folder
        Index index = new Index(indexFolder, settings);

        // Adding documents from the specified folder to the index
        index.add(documentsFolder);
    }
}

Vysvětlení

  • Nastavení indexu: Povolujeme high compression pro ukládání textu, optimalizujeme využití místa na disku bez kompromisu rychlosti dotazů.
  • Přidávání dokumentů: Metoda index.add() adds documents to index, skenuje složku rekurzivně a automaticky zpracovává všechny podporované formáty.

Jak výstupní text do souboru, proudu, řetězce a strukturovaných formátů

Po indexování často potřebujete extrahovat surový nebo formátovaný text dokumentu. GroupDocs.Search nabízí čtyři adaptéry, které vám umožní zapsat extrahovaný obsah do souboru, do paměťového proudu, do Java String nebo do strukturovaného objektového modelu.

Výstup textu dokumentu do souboru

FileOutputAdapter zapisuje extrahovaný text dokumentu do souboru ve zvoleném formátu.

Přehled

FileOutputAdapter zapisuje extrahovaný text ve zvoleném formátu (HTML, prostý text, atd.) přímo do souboru na disku. To je užitečné pro generování lidsky čitelných zpráv nebo pro předávání do následných zpracovatelských pipeline.

import com.groupdocs.search.*;

public class FeatureOutputToFile {
    public static void main(String[] args) {
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        Index index = new Index(indexFolder);

        // Assuming documents are already indexed, retrieve the first document
        DocumentInfo[] documents = index.getIndexedDocuments();
        if (documents.length > 0) {
            DocumentInfo document = documents[0];

            // Output document text to an HTML file
            FileOutputAdapter fileOutputAdapter = new FileOutputAdapter(OutputFormat.Html, YOUR_OUTPUT_DIRECTORY + "/Text.html");
            index.getDocumentText(document, fileOutputAdapter);
        }
    }
}

Vysvětlení

  • FileOutputAdapter: Převádí text indexovaného dokumentu do HTML a zapisuje jej na zadanou cestu souboru, zachovává základní formátování jako nadpisy a tabulky.

Výstup textu dokumentu do proudu

StreamOutputAdapter streamuje extrahovaný text dokumentu do ByteArrayOutputStream bez vytváření dočasného souboru.

Přehled

Když potřebujete obsah jen dočasně – např. pro odeslání přes HTTP nebo vložení do webové odpovědi – použijte StreamOutputAdapter. Streamuje text do ByteArrayOutputStream, čímž se vyhnete režii vytváření dočasného souboru.

import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;

public class FeatureOutputToStream {
    public static void main(String[] args) {
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        Index index = new Index(indexFolder);

        // Assuming documents are already indexed, retrieve the first document
        DocumentInfo[] documents = index.getIndexedDocuments();
        if (documents.length > 0) {
            DocumentInfo document = documents[0];

            // Output document text to a stream in HTML format
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            StreamOutputAdapter streamOutputAdapter = new StreamOutputAdapter(OutputFormat.Html, stream);
            index.getDocumentText(document, streamOutputAdapter);
        }
    }
}

Vysvětlení

  • StreamOutputAdapter: Streamuje text dokumentu do ByteArrayOutputStream, umožňuje flexibilní zpracování bez zásahu do souborového systému.

Výstup textu dokumentu do řetězce

StringOutputAdapter zachytí celý text dokumentu v jediném objektu String.

Přehled

Pro rychlé logování, ladění nebo zobrazení v UI, StringOutputAdapter zachytí celý text dokumentu v jediném objektu String.

import com.groupdocs.search.*;

public class FeatureOutputToString {
    public static void main(String[] args) {
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        Index index = new Index(indexFolder);

        // Assuming documents are already indexed, retrieve the first document
        DocumentInfo[] documents = index.getIndexedDocuments();
        if (documents.length > 0) {
            DocumentInfo document = documents[0];

            // Output document text to a string in HTML format
            StringOutputAdapter stringOutputAdapter = new StringOutputAdapter(OutputFormat.Html);
            index.getDocumentText(document, stringOutputAdapter);
            String result = stringOutputAdapter.getResult();
        }
    }
}

Vysvětlení

  • StringOutputAdapter: Zachytí text dokumentu v String, což usnadňuje vložení do logů, výstupu na konzoli nebo UI komponent.

Výstup textu dokumentu do strukturovaného formátu

StructuredOutputAdapter vrací bohatý objektový model, který obsahuje odstavce, tabulky a vlastní metadata.

Přehled

StructuredOutputAdapter vrací bohatý objektový model, který obsahuje odstavce, tabulky a vlastní metadata. Tento formát je ideální pro následné zpracování přirozeného jazyka (NLP) nebo workflow extrakce dat.

import com.groupdocs.search.*;

public class FeatureOutputToStructure {
    public static void main(String[] args) {
        String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
        Index index = new Index(indexFolder);

        // Assuming documents are already indexed, retrieve the first document
        DocumentInfo[] documents = index.getIndexedDocuments();
        if (documents.length > 0) {
            DocumentInfo document = documents[0];

            // Output document text to a structured format like PlainText
            StructuredOutputAdapter structuredOutputAdapter = new StructuredOutputAdapter(OutputFormat.PlainText);
            index.getDocumentText(document, structuredOutputAdapter);
        }
    }
}

Vysvětlení

  • StructuredOutputAdapter: Extrahuje text dokumentu do formátu structured text extraction, umožňuje detailní analýzu, extrakci polí a integraci s pipeline strojového učení.

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

ProblémPříčinaŘešení
Index nebyl vytvořenNesprávná cesta ke složce nebo chybějící oprávnění k zápisuOvěřte, že indexFolder existuje a aplikace má přístup k zápisu
Žádné dokumenty nebyly vrácenyindex.add() nebyla zavolána nebo je špatná zdrojová složkaUjistěte se, že documentsFolder ukazuje na správný adresář a obsahuje podporované typy souborů
Výstupní soubor je prázdnýCesta výstupního adaptéru je neplatná nebo chybí adresářeVytvořte cílový adresář (YOUR_OUTPUT_DIRECTORY) před spuštěním
Nárazová spotřeba paměti u velkých souborůNačítání celého souboru do pamětiPoužijte StreamOutputAdapter pro zpracování dat po částech

Často kladené otázky

Q: Mohu použít GroupDocs.Search s jinými JVM jazyky jako Kotlin nebo Scala?
A: Ano, knihovna je čistě Java a funguje bez problémů s jakýmkoli JVM jazykem.

Q: Jak komprese ovlivňuje rychlost vyhledávání?
A: Vysoká komprese snižuje využití disku až o 70 % a přidává jen minimální zatížení CPU během indexování; latence dotazu zůstává pod 100 ms pro typické pracovní zatížení.

Q: Je možné aktualizovat existující index bez jeho přestavby?
A: Rozhodně. Použijte index.add() pro nové soubory a index.remove() pro smazání zastaralých, což umožňuje inkrementální aktualizace.

Q: Který výstupní formát je nejlepší pro pipeline zpracování přirozeného jazyka?
A: Výsledek PlainText z adaptéru structured text extraction poskytuje čistý, jazykově neutrální obsah ideální pro úlohy NLP.

Q: Potřebuji licenci pro vývoj a testování?
A: Bezplatná zkušební licence stačí pro vývoj a hodnocení; produkční nasazení vyžadují zakoupenou licenci.

Závěr

Nyní máte kompletní, produkčně připravený workflow pro how to create index, přidání dokumentů a extrakci jejich textu ve všech formátech, které můžete potřebovat. Začněte konfigurací Index s kompresí, přidejte svou kolekci dokumentů a vyberte vhodný výstupní adaptér pro váš následný scénář – ať už jde o generování HTML zpráv, napájení NLP modelu nebo streamování obsahu do webového klienta. Experimentujte s API pro inkrementální aktualizace, abyste udrželi index aktuální bez nákladných přestaveb, a užijete si rychlé, spolehlivé vyhledávání v jakémkoli úložišti dokumentů.


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

Související tutoriály