Làm nổi bật kết quả tìm kiếm Java – Đánh chỉ mục đồng bộ & bất đồng bộ
Trong hướng dẫn này, bạn sẽ khám phá cách highlight search results Java sử dụng thư viện GroupDocs.Search, và bạn sẽ xem từng bước cách đánh chỉ mục tài liệu Java cả đồng bộ và bất đồng bộ. Dù bạn đang xây dựng một công cụ desktop nhỏ hay một dịch vụ tìm kiếm doanh nghiệp quy mô lớn, những kỹ thuật này cho phép bạn cung cấp các kết quả ngay lập tức, hiển thị rõ ràng mà không làm chặn các luồng của ứng dụng.
Câu trả lời nhanh
- What does “highlight search results Java” mean? Nó có nghĩa là bao quanh mỗi từ khớp trong các đoạn trích trả về bằng đánh dấu (ví dụ,
<mark>) để người dùng có thể ngay lập tức thấy ngữ cảnh của kết quả. - When should I use synchronous indexing? Sử dụng nó cho các bộ sưu tập nhỏ‑đến‑trung bình, nơi bạn cần tài liệu có thể tìm kiếm ngay khi được thêm.
- When is asynchronous indexing preferable? Chọn nó cho các lô lớn hoặc khi luồng UI phải luôn phản hồi trong khi chỉ mục được xây dựng ở nền.
- Do I need a license? Bản dùng thử miễn phí hoạt động cho phát triển; giấy phép đầy đủ loại bỏ các giới hạn và mở khóa các tính năng nâng cao.
- Which Java version is supported? Java 8 hoặc mới hơn.
“highlight search results Java” là gì?
highlight search results java là quá trình lấy dữ liệu khớp thô từ GroupDocs.Search và chèn các dấu hiệu trực quan—thông thường là thẻ HTML <mark>—xung quanh mỗi từ tìm được. Điều này làm cho các đoạn trích kết quả ngay lập tức có thể đọc được trên trang web hoặc thành phần Swing, cải thiện trải nghiệm người dùng bằng cách hiển thị chính xác vị trí xuất hiện của truy vấn.
Tại sao nên sử dụng GroupDocs.Search cho Java?
GroupDocs.Search cung cấp một engine hiệu suất cao, không phụ thuộc ngôn ngữ, có thể xử lý tới 5 000 tài liệu mỗi giây, hỗ trợ hơn 30 định dạng tệp, và đánh chỉ mục các bộ sưu tập 10 triệu tài liệu mà không cần tải toàn bộ corpus vào bộ nhớ. Tính năng làm nổi bật tích hợp, đánh chỉ mục thời gian thực, và các bộ phân tích đa ngôn ngữ khiến nó lý tưởng cho hệ thống quản lý nội dung, danh mục thương mại điện tử và kho lưu trữ tài liệu doanh nghiệp.
Yêu cầu trước
- Java Development Kit (JDK 8 hoặc mới hơn) đã được cài đặt và
JAVA_HOMEđược thiết lập đúng. - Một IDE như IntelliJ IDEA hoặc Eclipse.
- Một thư mục (ví dụ,
documents/) chứa các tệp bạn muốn đánh chỉ mục—văn bản thuần, PDF, DOCX, v.v. - Maven để quản lý phụ thuộc (hoặc bạn có thể thêm JAR thủ công).
Thư viện và phụ thuộc cần thiết
Thêm GroupDocs.Search vào file pom.xml của 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>
Để tải trực tiếp, lấy phiên bản mới nhất từ GroupDocs.Search for Java releases.
Cài đặt môi trường
- Xác minh
JAVA_HOMEtrỏ tới một JDK tương thích. - Tạo một dự án Maven mới và dán đoạn mã trên vào phần
<dependencies>. - Đặt các tệp mẫu vào thư mục như
src/main/resources/documents/.
Cách thiết lập GroupDocs.Search cho Java
Index là lớp cốt lõi đại diện cho một bộ sưu tập có thể tìm kiếm được lưu trên đĩa.
Tạo một thể hiện Index trỏ tới một thư mục trên đĩa, áp dụng giấy phép nếu bạn có, và tùy chọn cấu hình một bộ phân tích cho việc tách từ theo ngôn ngữ. Bước chuẩn bị này đảm bảo engine có thể đọc, ghi và tìm kiếm chỉ mục một cách hiệu quả.
Lớp Index là thành phần cốt lõi đại diện cho một bộ sưu tập có thể tìm kiếm trên đĩa. Sau khi bạn khởi tạo nó, mọi thao tác đánh chỉ mục và truy vấn sẽ chạy qua đối tượng này.
- Install the library – Sử dụng đoạn mã Maven ở trên hoặc tải JAR từ GroupDocs.
- Obtain a license – Bắt đầu với giấy phép dùng thử; thay thế bằng khóa sản xuất trước khi triển khai.
- Initialize the index – Đoạn mã sau cho thấy cách tạo (hoặc mở) một thư mục chỉ mục:
import com.groupdocs.search.Index;
// Create an index in the specified folder
Index index = new Index("path/to/index/folder");
Cách làm nổi bật kết quả tìm kiếm Java – đánh chỉ mục đồng bộ
DocumentHighlighter là một lớp tiện ích tạo các đoạn trích được làm nổi bật từ kết quả tìm kiếm.
Tải chỉ mục, thêm tài liệu bằng index.add(documentPath), thực hiện truy vấn, và sau đó gọi DocumentHighlighter để bao quanh các kết quả khớp bằng thẻ <mark>. Toàn bộ quá trình chạy trên luồng gọi, vì vậy tài liệu trở nên có thể tìm kiếm ngay sau khi add trả về cho người dùng cuối.
Bước 1: tạo chỉ mục và gắn xử lý lỗi
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());
}
});
Bước 2: thêm tài liệu và thực hiện tìm kiếm
// Add documents
index.add(documentsFolder);
// Perform a search
String query = "tincidunt";
SearchResult result = index.search(query);
Bước 3: xử lý kết quả và làm nổi bật kết quả tìm kiếm Java
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);
}
}
}
Cách làm nổi bật kết quả tìm kiếm Java – đánh chỉ mục bất đồng bộ
IndexingOptions cấu hình cách quá trình đánh chỉ mục chạy, bao gồm chế độ đồng bộ hoặc bất đồng bộ.
Cấu hình IndexingOptions để chạy ở chế độ nền, đăng ký các sự kiện StatusChanged, và cho phép engine đánh chỉ mục các tệp trong khi UI của bạn tiếp tục phục vụ các yêu cầu khác. Khi trạng thái chuyển thành Ready, bạn có thể thực hiện tìm kiếm và lấy các đoạn trích được làm nổi bật giống như trong chế độ đồng bộ.
AsyncIndexingListener nhận các cập nhật tiến độ, cho phép bạn hiển thị thanh tiến trình hoặc ghi nhật ký trạng thái mà không chặn luồng chính.
Bước 1: thiết lập chỉ mục với các listener sự kiện
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.");
}
}
});
Bước 2: bật chế độ bất đồng bộ và bắt đầu đánh chỉ mục
// Set up async indexing options
IndexingOptions options = new IndexingOptions();
options.setAsync(true);
// Add documents asynchronously
index.add(documentsFolder, options);
}
}
Cách đánh chỉ mục tài liệu Java – mẹo thực tế
index.update(path) cập nhật một tài liệu hiện có trong chỉ mục với tệp tại đường dẫn chỉ định.
Chia các bộ sưu tập lớn thành các lô từ 1 000–5 000 tệp, lọc theo phần mở rộng để tránh việc phân tích không cần thiết, và sử dụng index.update(path) cho các tệp đã thay đổi thay vì xây dựng lại toàn bộ chỉ mục. Những thực hành này giữ mức sử dụng bộ nhớ thấp và thời gian đánh chỉ mục dự đoán được để duy trì tính nhất quán.
- Batch size: Đối với các bộ sưu tập khổng lồ, chia thư mục thành các lô nhỏ hơn để tránh tăng đột biến bộ nhớ.
- File filters: Sử dụng
IndexingOptions.setFileExtensionsđể chỉ bao gồm các định dạng bạn cần (ví dụ,.pdf,.docx). - Re‑indexing: Khi một tài liệu thay đổi, gọi
index.update(documentPath)thay vì tạo lại chỉ mục từ đầu.
Các cân nhắc về hiệu năng
- Memory: Giám sát việc sử dụng heap; tăng
-Xmxnếu bạn xử lý nhiều tệp lớn đồng thời. - CPU: Đánh chỉ mục bất đồng bộ phân phối tải công việc qua các luồng nhưng vẫn tiêu thụ CPU—theo dõi việc sử dụng bằng JVisualVM.
- Result highlighting: Làm nổi bật thêm một chi phí nhẹ (≈ 2–5 ms cho mỗi kết quả). Lưu vào bộ nhớ đệm HTML đã tạo nếu bạn cần hiển thị các đoạn trích giống nhau nhiều lần.
Câu hỏi thường gặp
Q: Can I combine synchronous and asynchronous indexing in the same application?
A: Có. Sử dụng đánh chỉ mục đồng bộ cho các bộ dữ liệu nhỏ, thường xuyên cập nhật và đánh chỉ mục bất đồng bộ cho việc nhập khẩu hàng loạt hoặc các công việc nền.
Q: How do I customize the highlight style?
A: Cung cấp một triển khai DocumentHighlighter tùy chỉnh để ghi các thẻ HTML, CSS hoặc XML mong muốn quanh các từ khớp.
Q: What file types does GroupDocs.Search support out of the box?
A: Văn bản, PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, HTML, và nhiều hơn nữa thông qua các bộ phân tích tích hợp—hơn 30 định dạng tổng cộng.
Q: Is it possible to search in multiple languages simultaneously?
A: Chắc chắn. GroupDocs.Search bao gồm các bộ phân tích đa ngôn ngữ; chỉ cần cấu hình Analyzer phù hợp khi tạo chỉ mục.
Q: How do I secure the index folder?
A: Lưu chỉ mục trong một thư mục được bảo vệ, đặt quyền truy cập hệ thống tệp nghiêm ngặt, và tùy chọn mã hóa chỉ mục bằng các tính năng bảo mật của thư viện.
Cập nhật lần cuối: 2026-09-11
Kiểm tra với: GroupDocs.Search 25.4 for Java
Tác giả: GroupDocs