Kiemelt keresési eredmények Java – Szinkron és aszinkron indexelés

Ebben az útmutatóban megismerheti, hogyan highlight search results Java használja a GroupDocs.Search könyvtárat, és lépésről lépésre láthatja, hogyan indexelhet dokumentumokat Java-ban szinkron módon és aszinkron módon. Akár egy kis asztali eszközt, akár egy nagyszabású vállalati keresési szolgáltatást épít, ezek a technikák lehetővé teszik, hogy azonnali, vizuálisan tiszta egyezéseket nyújtson anélkül, hogy blokkolná az alkalmazás szálait.

Gyors válaszok

  • Mit jelent a “highlight search results Java”? Ez azt jelenti, hogy minden egyező kifejezést a visszaadott részletben jelölőkkel (pl. <mark>) körülveszünk, így a felhasználók azonnal láthatják a találat kontextusát.
  • Mikor kell szinkron indexelést használni? Használja kis‑közepes gyűjtemények esetén, ahol a dokumentumnak azonnal kereshetőnek kell lennie, amint hozzáadják.
  • Mikor előnyös az aszinkron indexelés? Nagy kötegek esetén vagy amikor a UI szálnak reagálónak kell maradnia, miközben az index a háttérben épül.
  • Szükségem van licencre? A fejlesztéshez egy ingyenes próba verzió is működik; egy teljes licenc eltávolítja a korlátozásokat és feloldja a fejlett funkciókat.
  • Mely Java verzió támogatott? Java 8 vagy újabb.

Mi a “highlight search results Java”?

highlight search results java a folyamat, amely a GroupDocs.Search nyers egyezési adatát veszi, és vizuális jelzéseket – általában HTML <mark> címkéket – helyez el minden megtalált kifejezés körül. Ez az eredményrészleteket azonnal olvashatóvá teszi egy weboldalon vagy Swing komponensben, javítva a felhasználói élményt azáltal, hogy pontosan megmutatja, hol jelenik meg a lekérdezés.

Miért használja a GroupDocs.Search-et Java-hoz?

A GroupDocs.Search egy nagy teljesítményű, nyelvfüggetlen motor, amely akár 5 000 dokumentumot másodpercenként képes feldolgozni, több mint 30 fájlformátumot támogat, és 10 millió dokumentumot tartalmazó gyűjteményeket indexel anélkül, hogy a teljes korpuszt a memóriába töltené. A beépített kiemelés, a valós idejű indexelés és a többnyelvű elemzők ideálissá teszik tartalomkezelő rendszerek, e‑kereskedelmi katalógusok és vállalati dokumentumtárak számára.

Előkövetelmények

  • Java Development Kit (JDK 8 vagy újabb) telepítve és a JAVA_HOME helyesen beállítva.
  • IntelliJ IDEA vagy Eclipse típusú IDE.
  • Egy mappa (pl. documents/) a indexelni kívánt fájlokkal – egyszerű szöveg, PDF, DOCX stb.
  • Maven a függőségkezeléshez (vagy manuálisan is hozzáadhatja a JAR-t).

Szükséges könyvtárak és függőségek

Adja hozzá a GroupDocs.Search-et a Maven pom.xml-jéhez:

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

Közvetlen letöltéshez szerezze be a legújabb verziót a GroupDocs.Search for Java releases oldalról.

Környezet beállítása

  • Ellenőrizze, hogy a JAVA_HOME egy kompatibilis JDK-ra mutat.
  • Hozzon létre egy új Maven projektet, és illessze be a fenti kódrészletet a <dependencies> szakaszba.
  • Helyezzen minta fájlokat egy src/main/resources/documents/ könyvtárba.

Hogyan állítsa be a GroupDocs.Search-et Java-hoz

Index a magosztály, amely egy lemezen tárolt kereshető gyűjteményt képvisel.

Hozzon létre egy Index példányt, amely egy lemezen lévő mappára mutat, alkalmazzon licencet, ha van, és opcionálisan konfiguráljon egy elemzőt a nyelvspecifikus tokenizáláshoz. Ez az előkészítő lépés biztosítja, hogy a motor hatékonyan tudja olvasni, írni és keresni az indexet.

Az Index osztály a magkomponens, amely egy lemezen tárolt kereshető gyűjteményt képvisel. Miután példányosította, minden indexelési és lekérdezési művelet ezen az objektumon keresztül folyik.

  1. Install the library – Használja a fenti Maven kódrészletet, vagy töltse le a JAR-t a GroupDocs oldalról.
  2. Obtain a license – Kezdje egy próba licenccel; a telepítés előtt cserélje le egy éles kulcsra.
  3. Initialize the index – A következő kódrészlet mutatja, hogyan hozhat létre (vagy nyithat meg) egy index mappát:
import com.groupdocs.search.Index;

// Create an index in the specified folder
Index index = new Index("path/to/index/folder");

Hogyan kiemeljük a keresési eredményeket Java – szinkron indexelés

DocumentHighlighter egy segédosztály, amely kiemelt részleteket generál a keresési eredményekből.

Töltse be az indexet, adjon hozzá dokumentumokat a index.add(documentPath) segítségével, futtasson egy lekérdezést, majd hívja meg a DocumentHighlighter-t, hogy a találatokat <mark> címkékkel körülvegye. A teljes folyamat a hívó szálon fut, így a dokumentum azonnal kereshetővé válik, miután az add visszatér a végfelhasználók számára.

1. lépés: az index létrehozása és hibakezelés csatolása

import com.groupdocs.search.*;
import com.groupdocs.search.events.*;
import java.nio.file.Paths;

public class SynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/SynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

2. lépés: dokumentumok hozzáadása és keresés futtatása

        // Add documents
        index.add(documentsFolder);

        // Perform a search
        String query = "tincidunt";
        SearchResult result = index.search(query);

3. lépés: eredmények feldolgozása és a “highlight search results Java” kiemelése

        for (int i = 0; i < result.getDocumentCount(); i++) {
            FoundDocument document = result.getFoundDocument(i);
            System.out.println(": Document: " + document.getDocumentInfo().getFilePath());
            System.out.println(": Occurrences: " + document.getOccurrenceCount());
        }

        // Highlight results
        if (result.getDocumentCount() > 0) {
            FoundDocument document = result.getFoundDocument(0);
            String path = YOUR_OUTPUT_DIRECTORY + "/Highlighted.html";
            OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, path);
            DocumentHighlighter highlighter = new DocumentHighlighter(outputAdapter);
            index.highlight(document, highlighter);
        }
    }
}

Hogyan kiemeljük a keresési eredményeket Java – aszinkron indexelés

IndexingOptions beállítja, hogyan fut a indexelési folyamat, beleértve a szinkron vagy aszinkron módot.

Állítsa be a IndexingOptions-t háttérmódban való futtatásra, iratkozzon fel a StatusChanged eseményekre, és engedje, hogy a motor a fájlokat indexelje, miközben a UI más kéréseket szolgál ki. Amikor az állapot Ready-re változik, végrehajthat kereséseket és kaphat kiemelt részleteket, akárcsak szinkron módban.

Az AsyncIndexingListener előrehaladási frissítéseket kap, lehetővé téve egy előrehaladási sáv vagy napló állapot megjelenítését a fő szál blokkolása nélkül.

1. lépés: az index beállítása eseményfigyelőkkel

import com.groupdocs.search.*;
import com.groupdocs.search.events.*;

public class AsynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AsynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors and status changes
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

        index.getEvents().StatusChanged.add(new EventHandler<BaseIndexEventArgs>() {
            @Override
            public void invoke(Object sender, BaseIndexEventArgs args) {
                if (args.getStatus() != IndexStatus.Ready || args.getStatus() == IndexStatus.Failed) {
                    System.out.println("Indexing completed.");
                }
            }
        });

2. lépés: aszinkron mód engedélyezése és indexelés indítása

        // Set up async indexing options
        IndexingOptions options = new IndexingOptions();
        options.setAsync(true);

        // Add documents asynchronously
        index.add(documentsFolder, options);
    }
}

Hogyan indexeljük a dokumentumokat Java – gyakorlati tippek

index.update(path) frissíti a meglévő dokumentumot az indexben a megadott útvonalú fájllal.

A nagy gyűjteményeket bontsa 1 000–5 000 fájlos kötegekre, szűrje a kiterjesztés alapján a felesleges feldolgozás elkerülése érdekében, és használja a index.update(path)-t a módosított fájlokhoz a teljes index újraépítése helyett. Ezek a gyakorlatok alacsony memóriahasználatot és előre látható indexelési időt biztosítanak a konzisztencia fenntartásához.

  • Batch size: Nagy gyűjtemények esetén ossza fel a mappát kisebb kötegekre a memóriahullámok elkerülése érdekében.
  • File filters: Használja az IndexingOptions.setFileExtensions-t, hogy csak a szükséges formátumokat (pl. .pdf, .docx) vegye fel.
  • Re‑indexing: Ha egy dokumentum változik, hívja a index.update(documentPath)-t ahelyett, hogy a teljes indexet újra létrehozná.

Teljesítmény szempontok

  • Memory: Figyelje a heap használatát; növelje a -Xmx értéket, ha egyszerre sok nagy fájlt dolgoz fel.
  • CPU: Az aszinkron indexelés a munkaterhet szálak között osztja el, de még mindig CPU-t fogyaszt – kövesse a használatot JVisualVM-mel.
  • Result highlighting: A kiemelés mérsékelt többletterhet jelent (≈ 2–5 ms eredményenként). Gyorsítótárazza a generált HTML-t, ha ugyanazokat a részleteket többször kell megjeleníteni.

Gyakran ismételt kérdések

Q: Kombinálhatom a szinkron és aszinkron indexelést ugyanabban az alkalmazásban?
A: Igen. Használja a szinkron indexelést kis, gyakran frissített halmazokhoz, és az aszinkron indexelést tömeges importokhoz vagy háttérfeladatokhoz.

Q: Hogyan testreszabhatom a kiemelés stílusát?
A: Adjon meg egy egyedi DocumentHighlighter implementációt, amely a kívánt HTML, CSS vagy XML címkéket írja a megtalált kifejezések köré.

Q: Milyen fájltípusokat támogat a GroupDocs.Search alapból?
A: Szöveg, PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, HTML, és még sok más beépített parserrel – összesen több mint 30 formátum.

Q: Lehetséges egyszerre több nyelven keresni?
A: Teljesen lehetséges. A GroupDocs.Search többnyelvű elemzőket tartalmaz; csak a megfelelő Analyzer-t konfigurálja az index létrehozásakor.

Q: Hogyan védhetem meg az index mappát?
A: Tárolja az indexet egy védett könyvtárban, állítson be szigorú fájlrendszer jogosultságokat, és opcionálisan titkosítsa az indexet a könyvtár biztonsági funkcióival.


Utolsó frissítés: 2026-09-11
Tesztelve a következővel: GroupDocs.Search 25.4 for Java
Szerző: GroupDocs

Kapcsolódó oktatóanyagok