เชี่ยวชาญการค้นหาเอกสารอย่างมีประสิทธิภาพด้วย GroupDocs.Search for Java
การค้นหาข้อความที่ต้องการในไฟล์ PDF, Word หรือสเปรดชีตนับพันอาจรู้สึกเหมือนการตามหาสิ่งที่เล็กเหมือนเข็มในกองฟาง. How to create index อย่างรวดเร็วและดึงเอาเข็มนั้นออกมาคือสิ่งที่ทำให้โซลูชันการค้นหาเอกสารมีคุณค่า. ในบทแนะนำนี้คุณจะได้เรียนรู้วิธีใช้ GroupDocs.Search for Java, ไลบรารีการค้นหา java ที่มีประสิทธิภาพสูง, เพื่อ create index, add documents to index, และ extract text from documents ในรูปแบบหลายประเภทเช่น ไฟล์, สตรีม, สตริง, และข้อมูลเชิงโครงสร้าง. เมื่อจบคุณจะมี pipeline การทำดัชนีที่พร้อมสำหรับการผลิตซึ่งสามารถขยายตัวให้รองรับคอลเลกชันเอกสารขนาดใหญ่พร้อมการใช้หน่วยความจำน้อย.
คำตอบด่วน
- วัตถุประสงค์หลักคืออะไร? To how to create index and retrieve document content instantly.
- ฉันควรใช้ไลบรารีใด? The GroupDocs.Search for Java java search library.
- ฉันสามารถส่งออกข้อความเป็นไฟล์ได้หรือไม่? Yes – the library provides output text to file adapters for HTML, plain text, and more.
- การสกัดข้อมูลเชิงโครงสร้างได้รับการสนับสนุนหรือไม่? Absolutely – use the structured text extraction adapter to get field‑level data.
- ฉันต้องการใบอนุญาตหรือไม่? A trial license works for development; a permanent license is required for production deployments.
สิ่งที่คุณจะได้เรียนรู้
- วิธี how to create index และ add documents to index ด้วย GroupDocs.Search for Java.
- เทคนิคสำหรับ output text to file, streams, strings, และรูปแบบเชิงโครงสร้าง.
- เคล็ดลับการเพิ่มประสิทธิภาพการทำงานที่ทำให้การทำดัชนีเร็วและใช้หน่วยความจำน้อย.
- สถานการณ์จริงที่คุณลักษณะเหล่านี้โดดเด่น เช่น ที่เก็บสัญญากฎหมายและคลังเอกสารวิชาการ.
ทำไมต้องใช้ GroupDocs.Search for Java?
GroupDocs.Search รองรับ 50+ input and output formats – รวมถึง DOCX, XLSX, PPTX, PDF, HTML, และรูปภาพทั่วไป – และสามารถทำดัชนีไฟล์หลายกิกะไบต์โดยไม่ต้องโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ. การทดสอบแสดงให้เห็นว่าคอลเลกชันเอกสารขนาด 1 GB สามารถทำดัชนีได้ภายในเวลาไม่ถึง 2 นาทีบนเซิร์ฟเวอร์ 8‑คอร์มาตรฐาน, ในขณะที่การค้นหาจะคืนผลภายในเวลาไม่เกิน 100 ms.
ข้อกำหนดเบื้องต้น
- Java Development Kit (JDK) 8 หรือใหม่กว่า.
- GroupDocs.Search for Java library (trial หรือ licensed).
- Maven สำหรับการจัดการ dependencies.
- ความรู้พื้นฐานเกี่ยวกับ Java I/O.
การตั้งค่า GroupDocs.Search for Java
ขั้นแรก ให้เพิ่มรีโพซิทอรี Maven ของ GroupDocs.Search และ dependency ลงใน pom.xml ของโปรเจกต์ของคุณ. ขั้นตอนนี้ทำให้ไลบรารีพร้อมใช้งานใน classpath.
การตั้งค่า Maven
Add the following repository and dependency configurations in your pom.xml file:
<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 ในการผลิต ให้รับใบอนุญาตแบบทดลองหรือแบบถาวรจากเว็บไซต์อย่างเป็นทางการ. ใบอนุญาตทดลองไม่มีข้อจำกัดสำหรับการพัฒนาและการทดสอบ.
วิธีสร้างดัชนี java ด้วยการตั้งค่าที่กำหนดเอง
Index เป็นคลาสหลักที่แสดงถึงคอลเลกชันของเอกสารที่สามารถค้นหาได้.IndexSettings กำหนดตัวเลือกต่าง ๆ เช่นการบีบอัดสำหรับดัชนี.CompressionLevel กำหนดระดับการบีบอัดที่ใช้กับข้อความที่จัดเก็บ.
โหลดอ็อบเจ็กต์ Index พร้อมเปิดใช้งานการบีบอัด, ชี้ไปที่โฟลเดอร์, และเพิ่มไฟล์ที่รองรับทั้งหมด. ย่อหน้าตอบโดยตรงนี้บอกคุณอย่างชัดเจนว่าจะทำอย่างไร: สร้างอินสแตนซ์ของ Index ด้วย new Index("indexFolder", new IndexSettings().setCompressionLevel(CompressionLevel.High)), จากนั้นเรียก index.add("documentsFolder", true) เพื่อทำดัชนีไฟล์ที่รองรับทั้งหมดแบบเรียกซ้ำ. โหมดบีบอัดสูงจะลดขนาดบนดิสก์ได้ถึง 70 % ในขณะที่ยังคงความเร็วการค้นหาเร็ว.
การสร้างดัชนีเป็นพื้นฐานสำหรับแอปพลิเคชันที่ขับเคลื่อนด้วยการค้นหา. ตัวอย่างด้านล่างจะพาคุณผ่านกระบวนการ, อธิบายแต่ละการตั้งค่า, และแสดงวิธีตรวจสอบว่าดัชนีถูกสร้างสำเร็จ.
การสร้างดัชนีและการทำดัชนีเอกสาร
ภาพรวม
Index class เป็นส่วนประกอบหลักที่แสดงถึงคอลเลกชันของเอกสารที่สามารถค้นหาได้. มันเก็บ inverted indexes, term dictionaries, และ metadata ที่จำเป็นสำหรับการค้นหาแบบเร็ว.
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);
}
}
คำอธิบาย
- Index Settings: เราเปิดใช้ high compression สำหรับการจัดเก็บข้อความ, ปรับปรุงการใช้พื้นที่ดิสก์โดยไม่ลดทอนความเร็วของการค้นหา.
- Adding Documents: เมธอด
index.add()adds documents to index, สแกนโฟลเดอร์แบบเรียกซ้ำและจัดการรูปแบบที่รองรับทั้งหมดโดยอัตโนมัติ.
วิธีส่งออกข้อความเป็นไฟล์, สตรีม, สตริง, และรูปแบบเชิงโครงสร้าง
หลังจากทำดัชนีแล้ว คุณมักต้องการสกัดข้อความดิบหรือข้อความที่จัดรูปแบบของเอกสาร. GroupDocs.Search มีอะแดปเตอร์สี่ประเภทที่ให้คุณเขียนเนื้อหาที่สกัดออกไปยังไฟล์, สตรีมในหน่วยความจำ, Java String, หรือโมเดลอ็อบเจ็กต์เชิงโครงสร้าง.
การส่งออกข้อความเอกสารไปยังไฟล์
FileOutputAdapter เขียนข้อความเอกสารที่สกัดไปยังไฟล์ในรูปแบบที่เลือก.
ภาพรวม
FileOutputAdapter เขียนข้อความที่สกัดในรูปแบบที่เลือก (HTML, plain text, ฯลฯ) โดยตรงไปยังไฟล์บนดิสก์. สิ่งนี้เป็นประโยชน์สำหรับการสร้างรายงานที่มนุษย์อ่านได้หรือส่งต่อไปยัง 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);
}
}
}
คำอธิบาย
- FileOutputAdapter: แปลงข้อความของเอกสารที่ทำดัชนีเป็น HTML และเขียนไปยังเส้นทางไฟล์ที่ระบุ, รักษาการจัดรูปแบบพื้นฐานเช่นหัวเรื่องและตาราง.
การส่งออกข้อความเอกสารไปยังสตรีม
StreamOutputAdapter สตรีมข้อความเอกสารที่สกัดเข้าไปใน ByteArrayOutputStream โดยไม่ต้องสร้างไฟล์ชั่วคราว.
ภาพรวม
เมื่อคุณต้องการเนื้อหาเพียงชั่วคราว—เช่น ส่งผ่าน HTTP หรือฝังในการตอบสนองเว็บ—ใช้ StreamOutputAdapter. มันสตรีมข้อความเข้าไปใน ByteArrayOutputStream, หลีกเลี่ยงค่าใช้จ่ายของการสร้างไฟล์ชั่วคราว.
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);
}
}
}
คำอธิบาย
- StreamOutputAdapter: สตรีมข้อความของเอกสารเข้าไปใน
ByteArrayOutputStream, ทำให้จัดการได้อย่างยืดหยุ่นโดยไม่ต้องเข้าถึงระบบไฟล์.
การส่งออกข้อความเอกสารเป็นสตริง
StringOutputAdapter จับข้อความทั้งหมดของเอกสารไว้ในอ็อบเจ็กต์ String เดียว.
ภาพรวม
สำหรับการบันทึกอย่างรวดเร็ว, การดีบัก, หรือการแสดงผล UI, StringOutputAdapter จับข้อความทั้งหมดของเอกสารไว้ในอ็อบเจ็กต์ 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();
}
}
}
คำอธิบาย
- StringOutputAdapter: จับข้อความของเอกสารใน
String, ทำให้สามารถฝังลงในบันทึก, การแสดงผลคอนโซล, หรือคอมโพเนนต์ UI ได้ง่าย.
การส่งออกข้อความเอกสารเป็นรูปแบบเชิงโครงสร้าง
StructuredOutputAdapter คืนโมเดลอ็อบเจ็กต์ที่มีความละเอียดสูงซึ่งประกอบด้วยย่อหน้า, ตาราง, และเมตาดาต้าตามกำหนด.
ภาพรวม
StructuredOutputAdapter คืนโมเดลอ็อบเจ็กต์ที่มีความละเอียดสูงซึ่งประกอบด้วยย่อหน้า, ตาราง, และเมตาดาต้าตามกำหนด. รูปแบบนี้เหมาะอย่างยิ่งสำหรับ pipeline การประมวลผลภาษาธรรมชาติ (NLP) หรือการสกัดข้อมูลต่อไป.
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);
}
}
}
คำอธิบาย
- StructuredOutputAdapter: สกัดข้อความของเอกสารเป็นรูปแบบ structured text extraction, ทำให้สามารถวิเคราะห์อย่างละเอียด, สกัดฟิลด์, และรวมเข้ากับ pipeline การเรียนรู้ของเครื่อง.
ปัญหาทั่วไปและวิธีแก้
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| ไม่สามารถสร้างดัชนี | เส้นทางโฟลเดอร์ไม่ถูกต้องหรือไม่มีสิทธิ์การเขียน | ตรวจสอบว่า indexFolder มีอยู่และแอปพลิเคชันมีสิทธิ์การเขียน |
| ไม่มีเอกสารที่ส่งคืน | index.add() ไม่ได้ถูกเรียกหรือโฟลเดอร์ต้นทางผิด | ตรวจสอบว่า documentsFolder ชี้ไปยังไดเรกทอรีที่ถูกต้องและมีไฟล์ที่รองรับ |
| ไฟล์ผลลัพธ์ว่าง | เส้นทางของอะแดปเตอร์ผลลัพธ์ไม่ถูกต้องหรือไม่มีไดเรกทอรี | สร้างไดเรกทอรีเป้าหมาย (YOUR_OUTPUT_DIRECTORY) ก่อนรัน |
| การใช้หน่วยความจำพุ่งสูงกับไฟล์ขนาดใหญ่ | โหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ | ใช้ StreamOutputAdapter เพื่อประมวลผลข้อมูลแบบเพิ่มทีละส่วน |
คำถามที่พบบ่อย
Q: ฉันสามารถใช้ GroupDocs.Search กับภาษา JVM อื่น ๆ เช่น Kotlin หรือ Scala ได้หรือไม่?
A: ใช่, ไลบรารีนี้เป็น Java แท้และทำงานร่วมกับภาษา JVM ใด ๆ อย่างราบรื่น.
Q: การบีบอัดส่งผลต่อความเร็วการค้นหาอย่างไร?
A: การบีบอัดสูงลดการใช้พื้นที่ดิสก์ได้ถึง 70 % และเพิ่มภาระการใช้ CPU เพียงเล็กน้อยระหว่างการทำดัชนี; ความหน่วงของการค้นหายังคงอยู่ต่ำกว่า 100 ms สำหรับงานทั่วไป.
Q: สามารถอัปเดตดัชนีที่มีอยู่โดยไม่ต้องสร้างใหม่ได้หรือไม่?
A: ได้แน่นอน. ใช้ index.add() สำหรับไฟล์ใหม่และ index.remove() เพื่อลบไฟล์ที่ล้าสมัย, ทำให้สามารถอัปเดตแบบเพิ่มส่วนได้.
Q: รูปแบบผลลัพธ์ใดที่เหมาะสมที่สุดสำหรับ pipeline การประมวลผลภาษาธรรมชาติ?
A: ผลลัพธ์ PlainText จากอะแดปเตอร์ structured text extraction ให้เนื้อหาที่สะอาดและไม่ขึ้นกับภาษา เหมาะอย่างยิ่งสำหรับงาน NLP.
Q: ฉันต้องการใบอนุญาตสำหรับการพัฒนาและการทดสอบหรือไม่?
A: ใบอนุญาตทดลองฟรีเพียงพอสำหรับการพัฒนาและการประเมิน; การใช้งานในสภาพแวดล้อมการผลิตต้องมีใบอนุญาตที่ซื้อแล้ว.
สรุป
ตอนนี้คุณมี workflow ที่ครบถ้วนและพร้อมสำหรับการผลิตสำหรับ how to create index, เพิ่มเอกสาร, และสกัดข้อความของพวกมันในทุกรูปแบบที่คุณอาจต้องการ. เริ่มต้นด้วยการกำหนดค่า Index พร้อมการบีบอัด, เพิ่มคอลเลกชันเอกสารของคุณ, และเลือกอะแดปเตอร์ผลลัพธ์ที่เหมาะสมสำหรับสถานการณ์ต่อไป—ไม่ว่าจะเป็นการสร้างรายงาน HTML, ป้อนข้อมูลให้โมเดล NLP, หรือสตรีมเนื้อหาไปยังไคลเอนต์เว็บ. ทดลองใช้ API การอัปเดตแบบเพิ่มส่วนเพื่อให้ดัชนีของคุณสดใหม่โดยไม่ต้องสร้างใหม่ที่มีค่าใช้จ่ายสูง, แล้วคุณจะได้สัมผัสการค้นหาเร็วและเชื่อถือได้ในทุกคลังเอกสาร.
อัปเดตล่าสุด: 2026-06-27
ทดสอบด้วย: GroupDocs.Search 25.4 for Java
ผู้เขียน: GroupDocs