ใช้ใบอนุญาตชั่วคราวสำหรับการทำดัชนีแบบแบ่งส่วนใน Java
ในบทแนะนำนี้คุณจะ **ใช้ใบอนุญาตชั่วคราว ** เพื่อเพิ่มเอกสารลงในดัชนีด้วยคุณสมบัติการค้นหาแบบแบ่งส่วนของ GroupDocs.Search วิธีการนี้ช่วยให้คุณจัดการกับคอลเลกชันเอกสารขนาดใหญ่—สัญญากฎหมาย, ตั๋วสนับสนุน, งานวิจัย—ในขณะที่ทำให้การใช้ java search index memory ต่ำและ เพิ่มประสิทธิภาพการค้นหา อย่างมาก คุณจะได้เห็นวิธีตั้งค่าโฟลเดอร์ดัชนี, ป้อนแหล่งเอกสารหลายแหล่ง, เปิดใช้งานการค้นหาแบบแบ่งส่วน, และรันทั้งการค้นหาแบบแบ่งส่วนแรกและต่อเนื่อง
คำตอบอย่างรวดเร็ว
- ขั้นตอนแรกคืออะไร? สร้างโฟลเดอร์ดัชนีการค้นหา
- ฉันจะรวมไฟล์หลายไฟล์ได้อย่างไร? ใช้
index.add()สำหรับแต่ละโฟลเดอร์เอกสาร - ตัวเลือกใดที่เปิดใช้งานการค้นหาแบบแบ่งส่วน?
options.setChunkSearch(true) - ฉันสามารถค้นหาต่อหลังจากส่วนแรกได้หรือไม่? ใช่, เรียก
index.searchNext()พร้อมกับโทเคน - ฉันต้องการใบอนุญาตหรือไม่? ใบอนุญาตทดลองหรือใบอนุญาตชั่วคราวใช้ได้สำหรับการพัฒนา; ใบอนุญาตเต็มจำเป็นสำหรับการใช้งานจริง
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างดัชนีการค้นหาในโฟลเดอร์ที่ระบุ
- ขั้นตอนการ เพิ่มเอกสารลงในดัชนี จากหลายตำแหน่ง
- การกำหนดค่าตัวเลือกการค้นหาเพื่อเปิดใช้งานการค้นหาแบบแบ่งส่วน
- การทำการค้นหาแบบแบ่งส่วนแรกและต่อเนื่อง
- สถานการณ์จริงที่การค้นหาเอกสารแบบแบ่งส่วนเป็นประโยชน์
ข้อกำหนดเบื้องต้น
เพื่อทำตามคู่มือนี้ โปรดตรวจสอบว่าคุณมี:
- ไลบรารีที่ต้องการ: GroupDocs.Search for Java 25.4 หรือใหม่กว่า
- การตั้งค่าสภาพแวดล้อม: ติดตั้ง Java Development Kit (JDK) ที่เข้ากันได้
- ความรู้เบื้องต้น: ความเข้าใจพื้นฐานการเขียนโปรแกรม Java และการใช้ Maven
การตั้งค่า GroupDocs.Search สำหรับ Java
เริ่มต้นโดยรวม GroupDocs.Search เข้าในโปรเจกต์ของคุณด้วย Maven:
<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>
หรือดาวน์โหลดเวอร์ชันล่าสุดจาก GroupDocs.Search for Java releases
การรับใบอนุญาต
เพื่อทดลองใช้ GroupDocs.Search:
- ทดลองฟรี – ทดสอบฟีเจอร์หลักโดยไม่ต้องผูกมัด
- ใบอนุญาตชั่วคราว – ให้การเข้าถึงต่อเนื่องสำหรับการพัฒนา
- ซื้อ – ใบอนุญาตเต็มสำหรับการใช้งานในผลิตภัณฑ์
วิธีเพิ่มเอกสารลงในดัชนี?
คำตอบโดยตรง: เรียก index.add() สำหรับแต่ละโฟลเดอร์ที่มีไฟล์ที่คุณต้องการให้ค้นหา; วิธีนี้จะสแกนโฟลเดอร์แบบเรียกซ้ำและเพิ่มเอกสารที่รองรับทุกประเภทลงในดัชนีในขั้นตอนเดียว ซึ่งช่วยลดความจำเป็นในการจัดการไฟล์ทีละไฟล์และเร่งความเร็วการนำเข้าจำนวนมาก
SearchIndex คือคลาสหลักที่แทนคอลเลกชันที่สามารถค้นหาได้บนดิสก์ หลังจากที่คุณสร้างอินสแตนซ์แล้ว การทำดัชนีและการทำคิวรีทั้งหมดจะไหลผ่านอ็อบเจกต์นี้
1. การสร้างดัชนี
คำตอบโดยตรง: สร้างอ็อบเจกต์ SearchIndex ด้วยพาธที่ต้องการเก็บไฟล์ดัชนี, จากนั้นเรียก index.create() เพื่อเริ่มต้นโครงสร้างการจัดเก็บ การเรียกนี้จะสร้างโฟลเดอร์และไฟล์เมตาดาต้าที่จำเป็นในครั้งแรกที่ใช้
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. การเพิ่มเอกสารลงในดัชนี
คำตอบโดยตรง: ใช้เมธอด index.add() และส่งพาธเต็มของแต่ละโฟลเดอร์ต้นทาง; API จะตรวจจับรูปแบบที่รองรับโดยอัตโนมัติ (PDF, DOCX, XLSX ฯลฯ) และสกัดข้อความที่สามารถค้นหาได้ลงในดัชนี
SearchOptions เป็นอ็อบเจกต์การกำหนดค่าที่ให้คุณปรับแต่งวิธีการประมวลผลเอกสารระหว่างการทำดัชนีและการค้นหา คุณจะใช้มันต่อไปเพื่อเปิดใช้งานการคิวรีแบบแบ่งส่วน
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\SearchByChunks";
Index index = new Index(indexFolder);
3. การกำหนดค่าตัวเลือกการค้นหาเพื่อการค้นหาแบบแบ่งส่วน
คำตอบโดยตรง: ตั้งค่า options.setChunkSearch(true) บนอินสแตนซ์ SearchOptions ก่อนทำคิวรี; การตั้งค่านี้บอกเอนจินให้แยกเอกสารแต่ละไฟล์เป็นส่วนย่อยเชิงตรรกะ (โดยทั่วไปคือย่อหน้า) และคืนผลลัพธ์ตามส่วนแทนที่จะคืนตามไฟล์ทั้งหมด
SearchResult จะเก็บส่วนที่ตรงกัน, ตำแหน่ง, และคะแนนความเกี่ยวข้อง เมื่อเปิดใช้งานการค้นหาแบบแบ่งส่วนแต่ละ SearchResult จะสอดคล้องกับส่วนย่อยหนึ่งของเอกสารต้นฉบับ
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. การทำการค้นหาแบบแบ่งส่วนแรก
คำตอบโดยตรง: เรียก index.search("your query", options); การเรียกนี้จะคืนคอลเลกชัน SearchResult สำหรับชุดส่วนที่ตรงกันแรกและโทเคนที่แสดงสถานะการค้นหาเพื่อใช้ต่อเนื่อง
โทเคนที่คืนมานี้สำคัญสำหรับการแบ่งหน้าในชุดผลลัพธ์ขนาดใหญ่โดยไม่ต้องทำคิวรีทั้งหมดใหม่
SearchOptions options = new SearchOptions();
options.setChunkSearch(true);
5. การทำการค้นหาแบบแบ่งส่วนต่อเนื่อง
คำตอบโดยตรง: ส่งโทเคนที่ได้จากการเรียกก่อนหน้าให้กับ index.searchNext(token, options); ทำซ้ำจนกว่าเมธอดจะคืนค่า null ซึ่งหมายความว่ารวบรวมส่วนที่ตรงกันทั้งหมดแล้ว
วิธีการแบบเพิ่มขึ้นนี้ช่วยให้การใช้หน่วยความจำต่ำ เพราะเพียงชุดส่วนปัจจุบันเท่านั้นที่อยู่ในหน่วยความจำ
String query = "invitation";
SearchResult result = index.search(query, options);
ทำไมต้องใช้การค้นหาแบบแบ่งส่วน?
การค้นหาแบบแบ่งส่วนจะแบ่งคอลเลกชันเอกสารขนาดมหาศาลเป็นชิ้นส่วนที่จัดการได้, ลดความกดดันของหน่วยความจำและเร่งเวลาตอบสนอง โดยการทำดัชนีระดับย่อหน้าหรือส่วน, เอนจินสามารถดึงเฉพาะส่วนที่เกี่ยวข้องได้, ซึ่งลดการใช้ CPU และปรับปรุงความหน่วงสำหรับผู้ใช้ปลายสุด ประโยชน์นี้มีความสำคัญโดยเฉพาะเมื่อ:
- ทีมกฎหมาย ต้องค้นหาข้อกำหนดเฉพาะในสัญญานับพันฉบับ
- พอร์ทัลสนับสนุนลูกค้า ต้องแสดงบทความฐานความรู้ที่เกี่ยวข้องโดยทันที
- นักวิจัย ต้องคัดกรองข้อมูลชุดใหญ่โดยไม่ต้องโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ
ข้ออ้างอิงเชิงปริมาณ: GroupDocs.Search สามารถประมวลผล PDF มากกว่า 500 หน้า ในเวลาน้อยกว่า 2 วินาทีต่อส่วน บนเซิร์ฟเวอร์ 8‑คอร์มาตรฐาน, พร้อมกับคง heap สูงสุดต่ำกว่า 200 MB
วิธีที่แนวทางนี้เพิ่มประสิทธิภาพการค้นหา
คำตอบโดยตรง: ด้วยการค้นหาช่วงย่อยแทนไฟล์ทั้งหมด, เอนจินสามารถข้ามส่วนที่ไม่เกี่ยวข้องได้เร็วขึ้น, ลดวงจร CPU, และเก็บเฉพาะส่วนที่กำลังทำงานในหน่วยความจำ, ซึ่งโดยตรงลดการใช้ java search index memory และให้เวลาตอบสนองเร็วขึ้น วิธีการที่มุ่งเป้าหมายนี้ยังช่วยให้การแคชและการประมวลผลแบบขนานทำงานได้ดีขึ้น, ทำให้หลายคอร์สามารถจัดการส่วนต่าง ๆ พร้อมกัน, เพิ่มอัตราการทำงานบนเซิร์ฟเวอร์หลายคอร์
ประโยชน์เพิ่มเติมรวมถึง:
- การประมวลผลส่วนแบบขนานบนหลายคอร์
- การหยุดก่อนล่วงหน้าเมื่อพบผลที่มีความเกี่ยวข้องสูง
การจัดการ java search index memory
คำตอบโดยตรง: จัดสรร heap ของ JVM ให้เพียงพอ (เช่น -Xmx2g หรือมากกว่า) ตามขนาดดัชนีที่คาดหวัง, รัน index.optimize() หลังการเพิ่มจำนวนมากเพื่อบีบอัดโครงสร้างดัชนี, และตรวจสอบการหยุดทำงานของ GC ด้วย VisualVM เพื่อหลีกเลี่ยงความหน่วง
เคล็ดลับการปรับแต่งเพิ่มเติม:
- ใช้
index.flush()หลังจากแบตช์ขนาดใหญ่เพื่อเขียนข้อมูลชั่วคราวลงดิสก์ - เปิด
options.setMemoryLimit(256)เพื่อจำกัดการใช้หน่วยความจำต่อการค้นหา
พิจารณาด้านประสิทธิภาพ
- การจัดการหน่วยความจำ – จัดสรร heap เพียงพอ (
-Xmx) สำหรับดัชนีขนาดใหญ่ - การตรวจสอบทรัพยากร – เฝ้าดูการใช้ CPU ระหว่างการทำดัชนีและการค้นหา
- การบำรุงรักษาดัชนี – สร้างหรือทำความสะอาดดัชนีเป็นระยะเพื่อกำจัดข้อมูลล้าสมัย
ข้อผิดพลาดทั่วไปและการแก้ไขปัญหา
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
OutOfMemoryError ระหว่างทำดัชนี | ขนาด heap ต่ำเกินไป | เพิ่ม heap ของ JVM (-Xmx2g หรือมากกว่า) |
| ไม่ได้ผลลัพธ์ | โทเคนส่วนไม่ถูกประมวลผล | ตรวจสอบให้ลูป while ทำงานจนกว่า getNextChunkSearchToken() จะเป็น null |
| การค้นช้า | ดัชนีไม่ได้ทำให้เป็นออพติมไลซ์ | รัน index.optimize() หลังการเพิ่มจำนวนมาก |
คำถามที่พบบ่อย
ถาม: การค้นหาแบบแบ่งส่วนคืออะไร?
ตอบ: การค้นหาแบบแบ่งส่วนจะแบ่งชุดข้อมูลเป็นชิ้นย่อยเล็ก ๆ, ทำให้คิวรีมีประสิทธิภาพบนปริมาณข้อมูลขนาดใหญ่โดยไม่ต้องโหลดเอกสารทั้งหมดเข้าสู่หน่วยความจำ
ถาม: ฉันจะอัปเดตดัชนีด้วยไฟล์ใหม่อย่างไร?
ตอบ: เพียงเรียก index.add() พร้อมพาธของเอกสารใหม่; ดัชนีจะรวมไฟล์เหล่านั้นโดยอัตโนมัติ
ถาม: GroupDocs.Search รองรับรูปแบบไฟล์ต่าง ๆ หรือไม่?
ตอบ: รองรับ PDF, DOCX, XLSX, PPTX, HTML, TXT, และกว่า 30 รูปแบบอื่น
ถาม: จุดคอขวดด้านประสิทธิภาพทั่วไปคืออะไร?
ตอบ: ข้อจำกัดของหน่วยความจำและดัชนีที่ไม่ได้ทำให้เป็นออพติมไลซ์เป็นสาเหตุหลัก; จัดสรร heap เพียงพอและทำให้ดัชนีเป็นออพติมไลซ์เป็นประจำ
ถาม: จะหาเอกสารอ้างอิงเพิ่มเติมได้ที่ไหน?
ตอบ: เยี่ยมชม GroupDocs.Search Documentation เพื่อดูคู่มือเชิงลึกและอ้างอิง API
ถาม: การค้นหาแบบแบ่งส่วนทำงานกับ PDF ที่เข้ารหัสหรือไม่?
ตอบ: ทำงานได้ หากคุณส่งรหัสผ่านผ่านโอเวอร์โหลด API ที่เหมาะสม
ถาม: ฉันจะตรวจสอบความคืบหน้าในการทำดัชนีอย่างไร?
ตอบ: ใช้โอเวอร์โหลด Index.add() ที่คืนค่าอ็อบเจกต์ Progress หรือเชื่อมต่อกับคอลแบ็กการบันทึกล็อก
แหล่งข้อมูล
- เอกสาร: GroupDocs.Search for Java Docs
- อ้างอิง API: GroupDocs.Search API Reference
- ดาวน์โหลด: GroupDocs.Search Releases
- GitHub: GroupDocs.Search GitHub Repository
- สนับสนุนฟรี: GroupDocs Forum
- ใบอนุญาตชั่วคราว: Obtain a Temporary License
อัปเดตล่าสุด: 2026-10-02
ทดสอบด้วย: GroupDocs.Search 25.4 for Java
ผู้เขียน: GroupDocs
while (result.getNextChunkSearchToken() != null) {
result = index.searchNext(result.getNextChunkSearchToken());
}