Ideiglenes licenc használata a darab‑alapú indexeléshez Java-ban
Ebben az oktatóanyagban ideiglenes licencet fogsz használni a dokumentumok indexhez adásához a GroupDocs.Search darab‑alapú keresési funkciójával. A megközelítés lehetővé teszi hatalmas dokumentumgyűjtemények – jogi szerződések, ügyféltámogatási jegyek, kutatási anyagok – kezelését, miközben alacsonyan tartja a java search index memory használatát, és drámaian növeli a keresési teljesítményt. Megmutatjuk, hogyan állítsd be az index mappát, hogyan táplálj több dokumentumforrást, hogyan engedélyezd a darabkeresést, és hogyan futtass mind az első, mind a későbbi darablekérdezéseket.
Gyors válaszok
- Mi az első lépés? Hozz létre egy keresési index mappát.
- Hogyan tudok sok fájlt belefoglalni? Használd a
index.add()-t minden dokumentummappához. - Melyik opció engedélyezi a darabkeresést?
options.setChunkSearch(true). - Folytathatom a keresést az első darab után? Igen, hívd a
index.searchNext()-t a tokennel. - Szükségem van licencre? Egy ingyenes próba vagy ideiglenes licenc működik fejlesztéshez; a teljes licenc szükséges a termeléshez.
Amit megtanul
- Hogyan hozz létre keresési indexet egy megadott mappában.
- Lépések a dokumentumok indexhez adásához több helyről.
- Keresési beállítások konfigurálása a darab‑alapú keresés engedélyezéséhez.
- Kezdeti és későbbi darab‑alapú keresések végrehajtása.
- Valós példák, ahol a darab‑alapú dokumentumkeresés kiemelkedik.
Előfeltételek
- Szükséges könyvtárak: GroupDocs.Search for Java 25.4 vagy újabb.
- Környezet beállítása: Telepített kompatibilis Java Development Kit (JDK).
- Tudás előfeltételek: Alap Java programozás és Maven ismerete.
A GroupDocs.Search beállítása Java-hoz
A kezdéshez integráld a GroupDocs.Search-t a projektedbe Maven segítségével:
<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>
Alternatívaként töltsd le a legújabb verziót a GroupDocs.Search for Java releases oldalról.
Licenc beszerzése
A GroupDocs.Search kipróbálásához:
- Ingyenes próba – teszteld a fő funkciókat kötelezettség nélkül.
- Ideiglenes licenc – kiterjesztett hozzáférés fejlesztéshez.
- Vásárlás – teljes licenc a termeléshez.
Hogyan adjon dokumentumokat az indexhez?
Közvetlen válasz: Hívd a index.add()-t minden olyan mappához, amely a kereshető fájlokat tartalmazza; a metódus rekurzívan beolvassa a mappát, és minden támogatott dokumentumot egyetlen műveletben hozzáad az indexhez. Ez megszünteti a manuális fájl‑fájl kezelés szükségességét, és felgyorsítja a tömeges betöltést.
SearchIndex a központi osztály, amely a lemezen lévő kereshető gyűjteményt képviseli. Miután példányosítod, minden indexelési és lekérdezési művelet ezen az objektumon keresztül folyik.
1. Index létrehozása
Közvetlen válasz: Hozz létre egy SearchIndex objektumot a útvonallal, ahol az indexfájlok tárolásra kerülnek, majd hívd a index.create()-t a tárolási struktúra inicializálásához. A hívás létrehozza a szükséges mappákat és metaadat fájlokat az első használatkor.
import com.groupdocs.search.*;
public class CreateIndex {
public static void main(String[] args) {
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\SearchByChunks";
// Creating an index in the specified folder
Index index = new Index(indexFolder);
}
}
2. Dokumentumok hozzáadása az indexhez
Közvetlen válasz: Használd a index.add() metódust, és add meg minden forrásmappa abszolút útvonalát; az API automatikusan felismeri a támogatott formátumokat (PDF, DOCX, XLSX, stb.) és kinyeri a kereshető szöveget az indexbe.
SearchOptions egy konfigurációs objektum, amely lehetővé teszi a dokumentumok finomhangolását az indexelés és keresés során. Később ezt fogod használni a darab‑alapú lekérdezések engedélyezéséhez.
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\SearchByChunks";
Index index = new Index(indexFolder);
3. Keresési beállítások konfigurálása darabkereséshez
Közvetlen válasz: Állítsd be a options.setChunkSearch(true)-t egy SearchOptions példányon a lekérdezés végrehajtása előtt; ez azt mondja a motornak, hogy bontsa fel minden dokumentumot logikai darabokra (általában bekezdésekre), és a találatokat darabonként adja vissza a teljes fájl helyett.
SearchResult tartalmazza a megtalált darabokat, azok pozícióit és relevancia pontszámait. Amikor a darabkeresés be van kapcsolva, minden SearchResult egyetlen eredeti dokumentum fragmentumának felel meg.
String documentsFolder1 = "YOUR_DOCUMENT_DIRECTORY";
String documentsFolder2 = "YOUR_DOCUMENT_DIRECTORY";
String documentsFolder3 = "YOUR_DOCUMENT_DIRECTORY";
index.add(documentsFolder1);
index.add(documentsFolder2);
index.add(documentsFolder3);
4. Kezdeti darab‑alapú keresés végrehajtása
Közvetlen válasz: Hajtsd végre a index.search("your query", options)-t; a hívás egy SearchResult gyűjteményt ad vissza az első egyező darabok halmazához, valamint egy tokent, amely a keresés állapotát jelzi a folytatáshoz.
A visszakapott token elengedhetetlen a nagy eredményhalmazok lapozásához a teljes lekérdezés újrafuttatása nélkül.
SearchOptions options = new SearchOptions();
options.setChunkSearch(true);
5. Darab‑alapú keresés folytatása
Közvetlen válasz: Add meg a korábbi hívásból kapott tokent a index.searchNext(token, options)-nek; ismételd, amíg a metódus null-t nem ad vissza, jelezve, hogy az összes egyező darab lekérdezve lett.
Ez a fokozatos megközelítés alacsonyan tartja a memóriahasználatot, mivel csak az aktuális darabcsoport van memóriában.
String query = "invitation";
SearchResult result = index.search(query, options);
Miért használjunk darab‑alapú keresést?
A darab‑alapú keresés felbontja a hatalmas dokumentumgyűjteményeket kezelhető darabokra, csökkentve a memória terhelését és felgyorsítva a válaszidőket. A bekezdés vagy szakasz szintű indexelés révén a motor csak a releváns fragmentumokat tudja visszaadni, ami csökkenti a CPU használatot és javítja a felhasználók késleltetését. Különösen hasznos, ha:
- Jogi csapatoknak kell megtalálniuk a konkrét záradékokat több ezer szerződésben.
- Ügyfélszolgálati portáloknak azonnal meg kell jeleníteniük a releváns tudásbázis cikkeket.
- Kutatóknak átnézhetik a kiterjedt adatállományokat anélkül, hogy az egész fájlokat betöltenék a memóriába.
Mérhető állítás: A GroupDocs.Search képes 500+ oldalas PDF-eket kevesebb mint 2 másodperc per darab alatt feldolgozni egy standard 8‑magos szerveren, miközben a csúcs heap méret 200 MB alatt marad.
Hogyan növeli ez a megközelítés a keresési teljesítményt
Közvetlen válasz: A kisebb darabok keresésével a teljes fájlok helyett a motor korán kihagyhatja a nem releváns részeket, csökkentheti a CPU ciklusokat, és csak az aktív darabot tartja memóriában, ami közvetlenül csökkenti a java search index memory fogyasztást és gyorsabb válaszidőket eredményez. Ez a célzott megközelítés hatékonyabb gyorsítótárazást és párhuzamos feldolgozást is lehetővé tesz, lehetővé téve, hogy több mag egyszerre különböző darabokat kezeljen, ami tovább javítja a throughput-ot a többmagos szervereken.
Additional benefits include:
- Párhuzamos darabfeldolgozás több magon.
- Korai leállás, ha magas relevanciájú találatot találnak.
A java keresési index memória kezelése
Közvetlen válasz: Allokálj elegendő JVM heap-et (pl. -Xmx2g vagy nagyobb) a várható index méret alapján, futtasd a index.optimize()-t a tömeges hozzáadások után az index struktúra tömörítéséhez, és figyeld a GC szüneteket a VisualVM-mel a késleltetés csúcsok elkerülése érdekében.
Further tuning tips:
- Használd a
index.flush()-t nagy adagok után, hogy az átmeneti adatokat lemezre írd. - Engedélyezd a
options.setMemoryLimit(256)-t a keresésenkénti memóriahasználat korlátozásához.
Teljesítmény szempontok
- Memória kezelés – Allokálj elegendő heap helyet (
-Xmx) nagy indexekhez. - Erőforrás monitorozás – Figyeld a CPU használatot az indexelés és keresés során.
- Index karbantartás – Időnként építsd újra vagy tisztítsd meg az indexet a régi adatok eldobásához.
Gyakori buktatók és hibaelhárítás
| Probléma | Miért fordul elő | Javítás |
|---|---|---|
OutOfMemoryError indexing közben | A heap méret túl alacsony | Növeld a JVM heap-et (-Xmx2g vagy nagyobb) |
| Nincs eredmény | A darab token nincs feldolgozva | Győződj meg róla, hogy a while ciklus fut, amíg a getNextChunkSearchToken() null nem lesz |
| Lassú keresési teljesítmény | Az index nincs optimalizálva | Futtasd a index.optimize()-t a tömeges hozzáadások után |
Gyakran feltett kérdések
Q: Mi az a darab‑alapú keresés?
A: A darab‑alapú keresés a adathalmazt kisebb darabokra osztja, lehetővé téve a hatékony lekérdezéseket nagy adatmennyiségen anélkül, hogy az egész dokumentumokat betöltené a memóriába.
Q: Hogyan frissíthetem az indexet új fájlokkal?
A: Egyszerűen hívd a index.add()-t az új dokumentumok útvonalával; az index automatikusan beépíti őket.
Q: Kezelni tudja a GroupDocs.Search a különböző fájlformátumokat?
A: Igen, támogatja a PDF, DOCX, XLSX, PPTX, HTML, TXT és több mint 30 egyéb formátumot.
Q: Mik a tipikus teljesítménybottleneckek?
A: A memória korlátok és a nem optimalizált indexek a leggyakoribbak; allokálj elegendő heap-et és rendszeresen optimalizáld az indexet.
Q: Hol találok részletesebb dokumentációt?
A: Látogasd meg a hivatalos GroupDocs.Search Documentation oldalt a mélyreható útmutatókért és API referenciákért.
Q: Működik a darab‑alapú keresés titkosított PDF-ekkel?
A: Igen, amennyiben a megfelelő API overload segítségével megadod a jelszót.
Q: Hogyan figyelhetem az indexelés előrehaladását?
A: Használd az Index.add() overload-ot, amely egy Progress objektumot ad vissza, vagy csatlakozz a naplózási visszahívásokhoz.
Erőforrások
- Dokumentáció: GroupDocs.Search for Java Docs
- API referencia: GroupDocs.Search API Reference
- Letöltés: GroupDocs.Search Releases
- GitHub: GroupDocs.Search GitHub Repository
- Ingyenes támogatás: GroupDocs Forum
- Ideiglenes licenc: Obtain a Temporary License
Utolsó frissítés: 2026-10-02
Tesztelve: GroupDocs.Search 25.4 for Java
Szerző: GroupDocs
while (result.getNextChunkSearchToken() != null) {
result = index.searchNext(result.getNextChunkSearchToken());
}