Làm Chủ Tìm Kiếm Tài Liệu Hiệu Quả với GroupDocs.Search cho Java
Việc tìm đoạn văn bản phù hợp trong hàng ngàn tệp PDF, Word hoặc bảng tính có thể cảm giác như tìm kim trong bãi cỏ khô. Cách tạo chỉ mục nhanh chóng và truy xuất kim đó là điều làm cho giải pháp tìm kiếm tài liệu trở nên có giá trị. Trong hướng dẫn này, bạn sẽ học cách sử dụng GroupDocs.Search for Java, một thư viện tìm kiếm java hiệu suất cao, để tạo chỉ mục, thêm tài liệu vào chỉ mục, và trích xuất văn bản từ tài liệu ở nhiều định dạng như tệp, luồng, chuỗi và dữ liệu có cấu trúc. Kết thúc, bạn sẽ có một quy trình tạo chỉ mục sẵn sàng cho môi trường sản xuất, có khả năng mở rộng cho bộ sưu tập tài liệu lớn đồng thời giữ mức sử dụng bộ nhớ thấp.
Câu trả lời nhanh
- Mục đích chính là gì? Để cách tạo chỉ mục và truy xuất nội dung tài liệu ngay lập tức.
- Thư viện nào tôi nên dùng? Là GroupDocs.Search for Java java search library.
- Tôi có thể xuất văn bản ra tệp không? Có – thư viện cung cấp các adapter output text to file cho HTML, plain text và các định dạng khác.
- Có hỗ trợ trích xuất có cấu trúc không? Chắc chắn – sử dụng adapter structured text extraction để lấy dữ liệu ở mức trường.
- Tôi có cần giấy phép không? Giấy phép dùng thử hoạt động cho việc phát triển; giấy phép vĩnh viễn cần thiết cho triển khai sản xuất.
Những gì bạn sẽ học
- Cách tạo chỉ mục và thêm tài liệu vào chỉ mục bằng GroupDocs.Search cho Java.
- Kỹ thuật cho output text to file, luồng, chuỗi và các định dạng có cấu trúc.
- Mẹo tối ưu hoá hiệu năng giúp quá trình tạo chỉ mục nhanh và tiết kiệm bộ nhớ.
- Các kịch bản thực tế nơi các tính năng này tỏa sáng, như kho lưu trữ hợp đồng pháp lý và lưu trữ bài báo học thuật.
Tại sao nên sử dụng GroupDocs.Search cho Java?
GroupDocs.Search hỗ trợ hơn 50 định dạng đầu vào và đầu ra – bao gồm DOCX, XLSX, PPTX, PDF, HTML và các loại ảnh phổ biến – và có thể tạo chỉ mục cho các tệp đa gigabyte mà không cần tải toàn bộ tệp vào bộ nhớ. Các phép đo cho thấy một bộ sưu tập tài liệu 1 GB có thể được tạo chỉ mục trong vòng dưới 2 phút trên máy chủ tiêu chuẩn 8‑core, trong khi các truy vấn tìm kiếm trả về kết quả trong thời gian dưới 100 ms.
Yêu cầu trước
- Java Development Kit (JDK) 8 hoặc mới hơn.
- GroupDocs.Search for Java library (bản dùng thử hoặc có giấy phép).
- Maven để quản lý phụ thuộc.
- Kiến thức cơ bản về Java I/O.
Cài đặt GroupDocs.Search cho Java
Đầu tiên, thêm kho Maven của GroupDocs.Search và phụ thuộc vào tệp pom.xml của dự án. Bước này đảm bảo thư viện có sẵn trên classpath.
Cấu hình Maven
Thêm các cấu hình kho và phụ thuộc sau vào tệp pom.xml của bạn:
<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>
Đối với những người muốn tải trực tiếp, bạn có thể lấy phiên bản mới nhất từ GroupDocs.Search for Java releases.
Mua giấy phép
Để sử dụng GroupDocs.Search trong môi trường sản xuất, hãy mua giấy phép dùng thử hoặc giấy phép vĩnh viễn từ trang chính thức. Giấy phép dùng thử không có hạn chế cho việc phát triển và kiểm thử.
Cách tạo chỉ mục java với cài đặt tùy chỉnh
Index là lớp cốt lõi đại diện cho một bộ sưu tập tài liệu có thể tìm kiếm.IndexSettings cấu hình các tùy chọn như nén cho chỉ mục.CompressionLevel xác định mức độ nén áp dụng cho văn bản đã lưu.
Tải đối tượng Index với nén được bật, chỉ định nó tới một thư mục và thêm tất cả các tệp được hỗ trợ. Đoạn văn trả lời trực tiếp này cho bạn biết chính xác những gì cần làm: khởi tạo Index bằng new Index("indexFolder", new IndexSettings().setCompressionLevel(CompressionLevel.High)), sau đó gọi index.add("documentsFolder", true) để tạo chỉ mục đệ quy cho mọi tệp được hỗ trợ. Chế độ nén cao giảm kích thước trên đĩa tới 70 % trong khi vẫn giữ tốc độ tìm kiếm nhanh.
Tạo chỉ mục là nền tảng cho bất kỳ ứng dụng dựa trên tìm kiếm nào. Ví dụ dưới đây hướng dẫn bạn qua quá trình, giải thích từng cài đặt và chỉ cách xác minh rằng chỉ mục đã được xây dựng thành công.
Tạo chỉ mục và lập chỉ mục tài liệu
Tổng quan
Lớp Index là thành phần cốt lõi đại diện cho một bộ sưu tập tài liệu có thể tìm kiếm. Nó lưu trữ các chỉ mục đảo ngược, từ điển thuật ngữ và siêu dữ liệu cần thiết cho việc tra cứu nhanh.
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);
}
}
Explanation
- Index Settings: We enable high compression for text storage, optimizing disk space usage without compromising query speed.
- Adding Documents: The
index.add()method adds documents to index, scanning the folder recursively and handling all supported formats automatically.
Cách xuất văn bản ra tệp, luồng, chuỗi và định dạng có cấu trúc
Sau khi lập chỉ mục, bạn thường cần trích xuất văn bản thô hoặc đã định dạng của tài liệu. GroupDocs.Search cung cấp bốn adapter cho phép bạn ghi nội dung đã trích xuất vào tệp, luồng trong bộ nhớ, một String Java, hoặc mô hình đối tượng có cấu trúc.
Xuất văn bản tài liệu ra tệp
FileOutputAdapter ghi văn bản tài liệu đã trích xuất vào tệp ở định dạng đã chọn.
Tổng quan
FileOutputAdapter ghi văn bản đã trích xuất ở định dạng đã chọn (HTML, plain text, v.v.) trực tiếp vào tệp trên đĩa. Điều này hữu ích cho việc tạo báo cáo dễ đọc cho con người hoặc cung cấp cho các pipeline xử lý tiếp theo.
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);
}
}
}
Explanation
- FileOutputAdapter: Chuyển đổi văn bản của tài liệu đã lập chỉ mục sang HTML và ghi vào đường dẫn tệp đã chỉ định, giữ lại định dạng cơ bản như tiêu đề và bảng.
Xuất văn bản tài liệu ra luồng
StreamOutputAdapter truyền văn bản tài liệu đã trích xuất vào một ByteArrayOutputStream mà không tạo tệp tạm thời.
Tổng quan
Khi bạn chỉ cần nội dung tạm thời—ví dụ, để gửi qua HTTP hoặc nhúng vào phản hồi web—hãy sử dụng StreamOutputAdapter. Nó truyền văn bản vào một ByteArrayOutputStream, tránh việc tạo tệp tạm thời.
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);
}
}
}
Explanation
- StreamOutputAdapter: Truyền văn bản của tài liệu vào một
ByteArrayOutputStream, cho phép xử lý linh hoạt mà không cần chạm tới hệ thống tệp.
Xuất văn bản tài liệu ra chuỗi
StringOutputAdapter nắm bắt toàn bộ văn bản tài liệu trong một đối tượng String duy nhất.
Tổng quan
Đối với việc ghi log nhanh, gỡ lỗi hoặc hiển thị UI, StringOutputAdapter nắm bắt toàn bộ văn bản tài liệu trong một đối tượng String duy nhất.
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();
}
}
}
Explanation
- StringOutputAdapter: Nắm bắt văn bản của tài liệu trong một
String, giúp dễ dàng nhúng vào log, đầu ra console hoặc các thành phần UI.
Xuất văn bản tài liệu ra định dạng có cấu trúc
StructuredOutputAdapter trả về một mô hình đối tượng phong phú chứa các đoạn văn, bảng và siêu dữ liệu tùy chỉnh.
Tổng quan
StructuredOutputAdapter trả về một mô hình đối tượng phong phú chứa các đoạn văn, bảng và siêu dữ liệu tùy chỉnh. Định dạng này lý tưởng cho các quy trình xử lý ngôn ngữ tự nhiên (NLP) hoặc trích xuất dữ liệu tiếp theo.
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);
}
}
}
Explanation
- StructuredOutputAdapter: Trích xuất văn bản tài liệu vào định dạng structured text extraction, cho phép phân tích chi tiết, trích xuất trường và tích hợp với các pipeline học máy.
Các vấn đề thường gặp và giải pháp
| Vấn đề | Nguyên nhân | Cách khắc phục |
|---|---|---|
| Chỉ mục không được tạo | Đường dẫn thư mục không đúng hoặc thiếu quyền ghi | Xác minh indexFolder tồn tại và ứng dụng có quyền ghi |
| Không có tài liệu nào được trả về | index.add() chưa được gọi hoặc thư mục nguồn sai | Đảm bảo documentsFolder trỏ tới thư mục đúng và chứa các loại tệp được hỗ trợ |
| Tệp đầu ra rỗng | Đường dẫn adapter đầu ra không hợp lệ hoặc thiếu thư mục | Tạo thư mục đích (YOUR_OUTPUT_DIRECTORY) trước khi chạy |
| Tăng đột biến bộ nhớ với tệp lớn | Tải toàn bộ tệp vào bộ nhớ | Sử dụng StreamOutputAdapter để xử lý dữ liệu theo từng phần |
Câu hỏi thường gặp
Q: Tôi có thể sử dụng GroupDocs.Search với các ngôn ngữ JVM khác như Kotlin hoặc Scala không?
A: Có, thư viện thuần Java và hoạt động liền mạch với bất kỳ ngôn ngữ JVM nào.
Q: Nén ảnh hưởng như thế nào đến tốc độ tìm kiếm?
A: Nén cao giảm việc sử dụng đĩa tới 70 % và chỉ gây thêm một tải CPU tối thiểu trong quá trình lập chỉ mục; độ trễ truy vấn vẫn dưới 100 ms cho các khối lượng công việc điển hình.
Q: Có thể cập nhật chỉ mục hiện có mà không cần xây dựng lại không?
A: Chắc chắn. Sử dụng index.add() cho các tệp mới và index.remove() để xóa các tệp đã lỗi thời, cho phép cập nhật tăng dần.
Q: Định dạng đầu ra nào là tốt nhất cho các pipeline xử lý ngôn ngữ tự nhiên?
A: Kết quả PlainText từ adapter structured text extraction cung cấp nội dung sạch, không phụ thuộc ngôn ngữ, lý tưởng cho các nhiệm vụ NLP.
Q: Tôi có cần giấy phép cho việc phát triển và kiểm thử không?
A: Giấy phép dùng thử miễn phí đủ cho phát triển và đánh giá; triển khai sản xuất yêu cầu mua giấy phép.
Kết luận
Bạn giờ đã có một quy trình hoàn chỉnh, sẵn sàng cho môi trường sản xuất để cách tạo chỉ mục, thêm tài liệu và trích xuất văn bản của chúng ở mọi định dạng bạn có thể cần. Bắt đầu bằng cách cấu hình Index với nén, thêm bộ sưu tập tài liệu của bạn, và chọn adapter đầu ra phù hợp cho kịch bản downstream của bạn—cho dù là tạo báo cáo HTML, cung cấp cho mô hình NLP, hoặc truyền nội dung tới client web. Thử nghiệm các API cập nhật tăng dần để giữ chỉ mục luôn mới mà không cần xây dựng lại tốn kém, và bạn sẽ có trải nghiệm tìm kiếm nhanh, đáng tin cậy trên bất kỳ kho lưu trữ tài liệu nào.
Last Updated: 2026-06-27
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs