Cách cấu hình GroupDocs.Search Network trong Java – Tăng tốc tìm kiếm

Trong các ứng dụng hiện đại, dữ liệu‑nặng, how to configure GroupDocs đúng cách là nền tảng để cung cấp kết quả tìm kiếm nhanh như chớp và có liên quan trên các kho tài liệu khổng lồ. Dù bạn đang xây dựng cổng doanh nghiệp, cơ sở kiến thức, hay danh mục sản phẩm, một GroupDocs.Search network được tinh chỉnh tốt cho phép bạn mở rộng theo chiều ngang, tích hợp logic đồng nghĩa, và kiểm soát độ trễ. Trong hướng dẫn này, chúng tôi sẽ đi qua từng bước cần thiết để thiết lập, triển khai và tinh chỉnh một GroupDocs.Search network bằng Java, cùng với các lời khuyên thực tế về việc thêm đồng nghĩa vào chỉ mục và xử lý vòng đời node.

Câu trả lời nhanh

  • Lợi ích chính của việc cấu hình GroupDocs.Search network là gì? Nó cho phép lập chỉ mục và truy vấn phân tán, cải thiện hiệu năng và khả năng mở rộng.
  • Tôi có cần giấy phép để chạy các ví dụ không? Bản dùng thử miễn phí hoạt động cho phát triển; giấy phép thương mại cần thiết cho môi trường sản xuất.
  • Có thể thêm đồng nghĩa mà không xây dựng lại chỉ mục không? Có—sử dụng từ điển đồng nghĩa tại thời gian chạy để add synonyms to index.
  • Tôi có thể triển khai bao nhiêu node? Bạn có thể triển khai bao nhiêu node tùy hạ tầng cho phép; mỗi node chạy trên một cổng riêng.
  • Yêu cầu phiên bản Java nào? JDK 8 hoặc mới hơn được hỗ trợ, với khả năng tương thích đầy đủ lên tới JDK 21.

Cấu hình GroupDocs.Search network là gì?

The GroupDocs.Search network là một tập hợp các tiến trình JVM hợp tác để lập chỉ mục và truy vấn một tập tài liệu chung. Nó bao gồm một node master điều phối một hoặc nhiều node worker (shard). Mạng trừu tượng hoá lưu trữ nền, vì vậy một truy vấn duy nhất sẽ tự động được phát tới mọi shard và kết quả được hợp nhất trước khi trả về cho người gọi.

Tại sao cần cấu hình GroupDocs.Search network?

Cấu hình một GroupDocs.Search network mang lại cho bạn ba lợi thế cụ thể: scalability, reliability, và enhanced relevance. Bằng cách phân phối tải lập chỉ mục trên tới 20 node, mỗi node xử lý một shard 5 GB, bạn có thể giảm thời gian lập chỉ mục tổng cộng khoảng 70 % so với cấu hình một node duy nhất. Thêm từ điển đồng nghĩa cải thiện độ thu hồi lên tới 35 % cho các truy vấn sử dụng thuật ngữ thay thế, trong khi dự phòng node đảm bảo thời gian hoạt động 99.9 % trong các cửa sổ bảo trì.

Yêu cầu trước

  • Java Development Kit (JDK) 8 – 21 (bất kỳ phiên bản LTS nào)
  • Maven 3.5 + để xây dựng dự án
  • Quen thuộc với cú pháp Java cơ bản và quản lý phụ thuộc Maven
  • Truy cập thư viện GroupDocs.Search cho Java (có sẵn qua Maven Central hoặc trang phát hành chính thức)

Cài đặt GroupDocs.Search cho Java

Thêm kho và phụ thuộc vào pom.xml Maven của bạn:

Đoạn XML sau thêm kho GroupDocs.Search và phụ thuộc thư việ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>

Hoặc, tải phiên bản mới nhất trực tiếp từ GroupDocs.Search for Java releases.

Nhận giấy phép

  • Free Trial – Khám phá các tính năng cốt lõi mà không tốn phí.
  • Temporary License – Mở khóa đầy đủ khả năng cho việc thử nghiệm ngắn hạn.
  • Commercial License – Cần thiết cho triển khai sản xuất và nhận hỗ trợ cao cấp.

Khởi tạo và Cài đặt Cơ bản

Tạo một lớp Java đơn giản để xác minh thư viện được tải đúng:

Lớp SampleInitializer minh họa việc tải engine GroupDocs.Search.

import com.groupdocs.search.*;

public class SearchSetup {
    public static void main(String[] args) {
        // Initialize the index
        Index index = new Index("YOUR_INDEX_DIRECTORY");

        System.out.println("GroupDocs.Search is ready to use!");
    }
}

Hướng dẫn từng bước để cấu hình GroupDocs.Search Network

1. Cấu hình Search Network

Xác định thư mục tài liệu cơ bản và cổng bắt đầu cho giao tiếp node.

SearchNetworkConfig chứa cấu hình cho các node mạng.

import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.configuring.*;

public class ConfigureSearchNetwork {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
        int basePort = 49128;

        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        
        // Configuration details and setup logic
    }
}
  • basePath – Thư mục chứa các từ điển (ví dụ: tệp đồng nghĩa).
  • basePort – Cổng đầu tiên; các node tiếp theo tăng dần từ giá trị này.

2. Triển khai các node Search Network

Khởi động nhiều node worker chia sẻ cùng một cấu hình.

SearchNode đại diện cho một node riêng lẻ trong mạng phân tán.

import com.groupdocs.search.scaling.*;

public class DeploySearchNetworkNodes {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/ManagingDictionaries/";
        int basePort = 49128;
        Configuration configuration = new Configuration();

        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
        
        // Node deployment logic
    }
}

Mỗi node chạy trên một cổng riêng (basePort + index) và giữ một shard của chỉ mục tổng thể, cho phép xử lý song song cả việc lập chỉ mục và thực thi truy vấn.

3. Đăng ký sự kiện Node

Giám sát sức khỏe, tiến độ lập chỉ mục và các điều kiện lỗi bằng cách gắn một bộ lắng nghe sự kiện vào node master.

NetworkEventListener xử lý các callback cho các sự kiện vòng đời node.

import com.groupdocs.search.scaling.*;

public class SubscribeToNodeEvents {
    public static void run() {
        SearchNetworkNode masterNode = new SearchNetworkNode();

        SearchNetworkNodeEvents.subscribe(masterNode);
        
        // Event subscription logic
    }
}

Các callback sự kiện cho phép bạn phản hồi khi node khởi động/dừng, hoàn thành lập chỉ mục và các lỗi bất ngờ, cung cấp khả năng quan sát toàn diện hệ thống phân tán.

4. Thêm đồng nghĩa vào Indexer của Node

Cải thiện độ liên quan bằng cách add synonyms to index tại thời gian chạy.

SynonymDictionary cho phép thêm các nhóm đồng nghĩa vào indexer.

import com.groupdocs.search.dictionaries.*;
import com.groupdocs.search.scaling.*;

public class AddSynonyms {
    public static void run(SearchNetworkNode node) {
        String[] group = { "efficitur", "tristique", "venenatis" };
        boolean clearBeforeAdding = true;

        Indexer indexer = node.getIndexer();
        int[] indices = node.getShardIndices();
        SynonymDictionary dictionary = indexer.getSynonymDictionary(indices[0]);

        if (clearBeforeAdding) {
            dictionary.clear();
        }
        dictionary.addRange(new String[][] { group });

        indexer.setDictionary(dictionary);
        
        // Synonym addition logic
    }
}
  • group – Mảng các thuật ngữ nên được coi là tương đương.
  • clearBeforeAdding – Đặt thành true nếu bạn muốn thay thế các mục hiện có.

5. Thêm thư mục để lập chỉ mục

Cho node master biết các thư mục nào chứa tài liệu bạn muốn tìm kiếm.

Indexer.addDirectory đăng ký một thư mục để lập chỉ mục.

import com.groupdocs.search.scaling.*;
import com.groupdocs.search.examples.Utils;

public class AddDirectoriesForIndexing {
    public static void run(SearchNetworkNode masterNode) {
        String documentsPath = "YOUR_DOCUMENT_DIRECTORY/DocumentsPath";

        IndexingDocuments.addDirectories(masterNode, documentsPath);
        
        // Directory addition logic
    }
}

Phương thức này quét thư mục một cách đệ quy và phân phối các tệp qua các shard, hỗ trợ hơn 10 TB dữ liệu mà không cần tải toàn bộ tệp vào bộ nhớ.

6. Thực hiện tìm kiếm văn bản trong mạng

Thực thi một truy vấn trên tất cả các node, tùy chọn buộc hành vi khớp chính xác.

SearchEngine.search chạy truy vấn trên mạng.

import com.groupdocs.search.scaling.*;

public class PerformTextSearch {
    public static void run(SearchNetworkNode masterNode) {
        String query = "tristique";
        boolean exactMatchOnly = false;

        TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
        exactMatchOnly = true;
        TextSearchInNetwork.searchAll(masterNode, query, exactMatchOnly);
        
        // Search execution logic
    }
}

Chuyển exactMatchOnly thành true khi bạn cần khớp chính xác các thuật ngữ mà không có stemming, điều này có thể cải thiện độ chính xác cho các trường hợp tìm kiếm mã lên tới 20 %.

7. Đóng các node mạng

Giải phóng tài nguyên một cách nhẹ nhàng khi xử lý hoàn tất.

node.close() tắt một SearchNode và giải phóng tài nguyên.

import com.groupdocs.search.scaling.*;

public class CloseNetworkNodes {
    public static void run(SearchNetworkNode[] nodes) {
        for (SearchNetworkNode node : nodes) {
            node.close();
            
            // Node closure logic
        }
    }
}

Đóng đúng cách ngăn rò rỉ bộ nhớ và giữ JVM khỏe mạnh, đặc biệt trong các dịch vụ chạy lâu mà tái sử dụng node vào giờ không cao điểm.

Ứng dụng thực tiễn

Kịch bảnCách mạng giúp
Enterprise SearchPhân phối việc lập chỉ mục trên các máy chủ trung tâm dữ liệu cho các kho dữ liệu quy mô petabyte, đạt độ trễ truy vấn dưới một giây cho hơn 100 triệu tài liệu.
Document ManagementThêm đồng nghĩa vào chỉ mục để người dùng tìm tài liệu ngay cả khi dùng thuật ngữ khác nhau, tăng độ thu hồi lên tới 35 %.
E‑commerce CatalogTriển khai các node riêng cho từng khu vực để phục vụ tìm kiếm sản phẩm địa phương nhanh chóng, giảm thời gian phản hồi trung bình từ 250 ms xuống 80 ms.
Content ManagementGiữ nội dung có thể tìm kiếm trong khi biên tập viên thêm tệp mới vào các thư mục cụ thể; mạng sẽ lập chỉ mục tăng dần mà không gây thời gian ngừng hoạt động.

Các vấn đề thường gặp & Giải pháp

  • Port Conflicts – Đảm bảo cổng của mỗi node (basePort + index) không bị chiếm; điều chỉnh basePort nếu cần.
  • Synonym Not Applied – Kiểm tra bạn đã gọi indexer.setDictionary(dictionary) sau khi thêm các thuật ngữ; nếu không, các đồng nghĩa mới sẽ không được xét trong tìm kiếm.
  • Node Not Responding – Đăng ký sự kiện; tìm các callback NodeFailed để chẩn đoán vấn đề mạng.
  • Memory Leak on Close – Luôn gọi node.close() cho mọi node đã triển khai; cân nhắc sử dụng khối try‑with‑resources để tự động dọn dẹp.

Câu hỏi thường gặp

Q: Triển khai nhiều node cải thiện hiệu năng tìm kiếm như thế nào?
A: Mỗi node lập chỉ mục một shard dữ liệu, cho phép xử lý song song và giảm độ trễ truy vấn khi khối lượng công việc được chia sẻ trên cụm.

Q: Tôi có thể thêm đồng nghĩa mà không cần lập chỉ mục lại các tài liệu hiện có không?
A: Có, bạn có thể add synonyms to index tại thời gian chạy thông qua từ điển đồng nghĩa; các thay đổi có hiệu lực ngay lập tức cho các truy vấn mới.

Q: Việc đăng ký sự kiện node có bắt buộc không?
A: Mặc dù không bắt buộc cho hoạt động cơ bản, việc đăng ký sự kiện cung cấp khả năng quan sát sức khỏe node và giúp bạn phản hồi nhanh chóng khi có lỗi.

Q: Các thực tiễn tốt nhất để quản lý tài nguyên node là gì?
A: Thường xuyên đóng các node không hoạt động, giám sát việc sử dụng bộ nhớ JVM, và tái sử dụng node vào giờ không cao điểm để duy trì mức tiêu thụ tài nguyên tối ưu.

Q: GroupDocs.Search có hỗ trợ các định dạng không phải văn bản như PDF hoặc hình ảnh không?
A: Chắc chắn. Thư viện trích xuất văn bản từ PDF, các tệp Office và thực hiện OCR trên hình ảnh, cho phép chúng có thể tìm kiếm ngay lập tức.

Cập nhật lần cuối: 2026-07-16
Kiểm tra với: GroupDocs.Search 25.4 cho Java
Tác giả: GroupDocs

Hướng dẫn liên quan