在 Java 中配置 GroupDocs.Search 網路 – 提升搜尋

在當今以資料為驅動的應用程式中,configure groupdocs search network 是提供快速、精確結果於龐大文件集合的關鍵步驟。無論您是建立企業級搜尋入口網站或是擴充現有解決方案,良好配置的 GroupDocs.Search 網路可讓您水平擴展、加入同義詞支援,並保持低延遲。在本教學中,您將學習如何使用 Java 設定、部署與微調 GroupDocs.Search 網路,以及加入同義詞至索引與管理節點生命週期的實用技巧。

快速答覆

  • 配置 GroupDocs.Search 網路的主要好處是什麼? 它允許分散式索引與查詢,提升效能與可擴展性。
  • 執行範例是否需要授權? 免費試用可用於開發;商業授權則是正式環境的必要條件。
  • 可以在不重新建立索引的情況下加入同義詞嗎? 可以 — 在執行期間使用同義詞字典來 add synonyms to index
  • 我可以部署多少個節點? 您可以依基礎建設的容許度部署任意數量的節點;每個節點皆在獨立的埠口上運行。

什麼是配置 GroupDocs.Search 網路?

配置 GroupDocs.Search 網路是指定義資料夾結構、埠口與節點設定,使多個 JVM 實例能協同進行索引與搜尋。此設定會建立一個 master‑node,協調 workers(分片),並確保查詢在整個資料集上執行。

為何要配置 GroupDocs.Search 網路?

  • Scalability – 在多台機器上分散索引負載。
  • Reliability – 可在不中斷服務的情況下新增或移除節點。
  • Search relevanceAdd synonyms to index 以獲得更豐富的結果。
  • Performance – 平行查詢執行可降低回應時間。

前置條件

  • Java Development Kit (JDK) 8 或更新版本
  • Maven 用於建置專案
  • 具備基本的 Java 語法知識
  • 取得 GroupDocs.Search for Java 函式庫(透過 Maven 或官方發佈頁面下載)

設定 GroupDocs.Search for Java

將儲存庫與相依性加入您的 Maven pom.xml

<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 下載最新版本。

取得授權

  • Free Trial – 無償探索核心功能。
  • Temporary License – 為短期測試解鎖完整功能。
  • Commercial License – 正式環境部署所必需的授權。

基本初始化與設定

建立一個簡易的 Java 類別,以驗證函式庫正確載入:

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!");
    }
}

步驟指南:配置 GroupDocs.Search 網路

1. 設定搜尋網路

定義基礎文件資料夾以及節點通訊的起始埠口。

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 – 儲存字典(例如同義詞檔案)的路徑。
  • basePort – 第一個埠口;之後的節點會在此基礎上遞增。

2. 部署搜尋網路節點

啟動多個共用相同設定的 worker 節點。

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
    }
}

每個節點在其獨立的埠口(basePort + index)上運行,並持有整體索引的一個分片。

3. 訂閱節點事件

透過將事件監聽器附加至 master node,監控狀態、索引進度與錯誤情況。

import com.groupdocs.search.scaling.*;

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

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

事件回呼讓您能對節點啟動/停止、索引完成以及意外失敗作出回應。

4. 為節點的 Indexer 加入同義詞

在執行期間透過 add synonyms to index 提升相關性。

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 – 應視為等價的詞彙陣列。
  • clearBeforeAdding – 若要取代現有條目,請設為 true

5. 新增索引目錄

告訴 master node 哪些資料夾包含您希望可搜尋的文件。

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
    }
}

此方法會遞迴掃描目錄,並將檔案分配至各分片。

6. 在網路中執行文字搜尋

在所有節點上執行查詢,亦可選擇強制精確匹配行為。

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
    }
}

當您需要不經詞幹化的嚴格詞彙匹配時,將 exactMatchOnly 設為 true

7. 關閉網路節點

處理完成後,優雅地釋放資源。

import com.groupdocs.search.scaling.*;

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

正確的關閉可防止記憶體洩漏,並保持 JVM 健康。

實務應用

情境網路如何協助
Enterprise Search在資料中心伺服器上分散索引,以支援 PB 級規模語料庫。
Document Management加入同義詞至索引,讓使用者即使使用不同術語也能找到文件。
E‑commerce Catalog部署區域性節點,以快速提供本地化的商品搜尋。
Content Management在編輯者將新檔案加入特定目錄時,仍能保持內容可搜尋。

常見問題與解決方案

  • Port Conflicts – 確認每個節點的埠口(basePort + index)皆未被佔用;如有需要,調整 basePort
  • Synonym Not Applied – 確認在加入詞彙後已呼叫 indexer.setDictionary(dictionary)
  • Node Not Responding – 訂閱事件;檢查 NodeFailed 回呼以診斷網路問題。
  • Memory Leak on Close – 針對每個已部署的節點,務必呼叫 node.close()

常見問答

Q: 部署多個節點如何提升搜尋效能?
A: 每個節點索引資料的一個分片,允許平行處理,並因工作負載分散而降低查詢延遲。

Q: 可以在不重新索引現有文件的情況下加入同義詞嗎?
A: 可以,您可於執行期間透過同義詞字典 add synonyms to index;變更會立即對新查詢生效。

Q: 必須訂閱節點事件嗎?
A: 雖非基本操作的必要條件,訂閱事件可讓您掌握節點健康狀態,並及時對失敗作出回應。

Q: 管理節點資源的最佳實踐是什麼?
A: 定期關閉閒置節點、監控 JVM 記憶體使用情況,並在非高峰時段回收節點,以維持資源消耗最佳化。

Q: GroupDocs.Search 是否支援非文字格式,如 PDF 或影像?
A: 當然支援。函式庫可從 PDF、Office 檔案擷取文字,甚至對影像執行 OCR,使其即時可搜尋。

最後更新: 2026-01-16
測試環境: GroupDocs.Search 25.4 for Java
作者: GroupDocs