如何在 Java 中使用 GroupDocs.Search 配置搜尋

在當今快速變化的數位世界,如何配置搜尋的效率足以左右專案的成敗。無論你在處理成千上萬的合約、研究論文或內部報告,完善的搜尋網路都能讓你在數秒內找到正確的文件。本教學將帶你一步步設定搜尋網路、部署節點,並使用 GroupDocs.Search for Java 啟用即時搜尋更新

快速答案

  • 搜尋網路的主要目的為何? 將索引與查詢處理分散至多個節點,以提升可擴展性與速度。
  • 需要哪個版本的函式庫? GroupDocs.Search for Java v25.4 或更新版本。
  • 是否需要授權? 免費試用可用於評估;正式上線需購買商業授權。
  • 即時更新如何處理? 訂閱節點事件,於索引變更時觸發。
  • 可以即時新增文件資料夾嗎? 可以—使用索引器的 addDirectories 方法。

在 GroupDocs 中「如何配置搜尋」是什麼意思?

配置搜尋即是建立一個搜尋網路,讓系統知道文件所在位置、節點之間的通訊方式,以及索引如何協調。網路配置完成後,你可以在不中斷服務的情況下新增或移除節點,確保搜尋結果持續保持最新。

為什麼選擇 GroupDocs.Search for Java?

  • 可擴展性: 將工作負載分散至多台機器。
  • 即時更新: 新增的檔案會立即在整個網路中同步。
  • 整合簡易: Maven 設定簡單,Java API 清晰。
  • 企業級: 能處理大型語料庫與複雜查詢情境。

前置條件

  • 已安裝 Java Development Kit (JDK) 8+
  • 具備 Maven 以管理相依性。
  • 具備基本的 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 取得函式庫。

取得授權

  • 免費試用: 取得試用授權以探索全部功能。
  • 臨時授權: 申請延長評估期間。
  • 商業授權: 正式上線時必須使用。

基本初始化

import com.groupdocs.search.Configuration;
// Initialize configuration with your document path and port
String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/GettingDocumentsInNetwork/";
int basePort = 49112;

Configuration config = new Configuration(basePath, basePort);

如何在 Java 中配置搜尋網路

步驟 1:匯入必要的套件

import com.groupdocs.search.scaling.ConfiguringSearchNetwork;
import com.groupdocs.search.scaling.Configuration;

步驟 2:配置網路

String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/GettingDocumentsInNetwork/";
int basePort = 49112;

Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
  • 參數說明: basePath 指向你的文件資料夾;basePort 為節點通訊使用的 TCP 埠號。

部署搜尋網路節點

步驟 1:匯入部署套件

import com.groupdocs.search.scaling.SearchNetworkDeployment;
import com.groupdocs.search.scaling.SearchNetworkNode;

步驟 2:部署節點

String[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchNetworkNode masterNode = nodes[0]; // Designate the first node as the master node
  • 主節點 (Master Node): 負責協調所有節點的搜尋與索引工作。

訂閱節點事件以實現即時搜尋更新

步驟 1:匯入事件套件

import com.groupdocs.search.scaling.SearchNetworkNodeEvents;

步驟 2:訂閱主節點事件

SearchNetworkNodeEvents.subscribe(masterNode);
  • 事件處理: 當文件新增、更新或刪除時,即可觸發即時搜尋更新

新增索引資料夾

步驟 1:匯入索引器套件

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

步驟 2:加入文件資料夾

Indexer indexer = masterNode.getIndexer();
indexer.addDirectories("YOUR_DOCUMENT_DIRECTORY/DocumentsPath");
  • 動態索引: 可隨需求加入任意數量的資料夾,網路會自動索引。

取得已索引的文件

步驟 1:匯入搜尋套件

import com.groupdocs.search.scaling.Searcher;
import com.groupdocs.search.scaling.NetworkDocumentInfo;

步驟 2:取得文件資訊

Searcher searcher = masterNode.getSearcher();
int[] shardIndices = masterNode.getShardIndices();

for (int i = 0; i < shardIndices.length; i++) {
    int shardIndex = shardIndices[i];
    NetworkDocumentInfo[] infos = searcher.getIndexedDocuments(shardIndex);

    for (NetworkDocumentInfo info : infos) {
        int nodeIndex = masterNode.getNodeIndex(info.getShardIndex());
        String filePath = info.getDocumentInfo().getFilePath();

        // Retrieve and process document attributes
        String[] attributes = indexer.getAttributes(filePath);
        
        NetworkDocumentInfo[] items = searcher.getIndexedDocumentItems(info);
        for (NetworkDocumentInfo item : items) {
            // Process each indexed item
        }
    }
}
  • 分片管理: 透過將文件分散至多個分片,有效處理大規模資料集。

實務應用

  1. 企業文件管理: 在數百萬檔案中集中搜尋。
  2. 法律事務所: 快速定位案件檔、合約與證據。
  3. 學術研究: 索引期刊與論文,實現即時檢索。

效能考量

  • 優化索引: 定期執行索引刷新並清除過期資料。
  • 記憶體管理: 監控 JVM 堆積,特別是在處理大型分片時。
  • 可擴展性規劃: 隨語料庫成長增添節點,網路會自動平衡負載。

常見問題與解決方案

問題原因解決方式
節點無法連線埠號衝突或防火牆阻擋確認 basePort 已開放且未被其他服務佔用
索引未更新未訂閱事件部署後呼叫 SearchNetworkNodeEvents.subscribe(masterNode)
記憶體不足載入過多大型分片減少分片大小或提升 JVM 堆積 (-Xmx 參數)

常見問答

Q: 網路運行中可以新增資料夾嗎?
A: 可以—使用 indexer.addDirectories() 方法;已訂閱的事件會即時傳播更新。

Q: 要如何監控節點健康狀態?
A: 每個 SearchNetworkNode 都提供狀態 API,可整合至你慣用的監控工具。

Q: 主節點可以部署在不同的機器上嗎?
A: 完全可以。只要所有節點使用相同的 basePort 並能相互連線即可。

Q: 支援哪些檔案格式?
A: GroupDocs.Search 原生支援 PDF、Word、Excel、PowerPoint、純文字等多種格式。

Q: 新增節點後需要重新啟動網路嗎?
A: 不需要—節點可動態加入或移除,主節點會自動重新平衡分片。

結論

現在,你已完整掌握使用 GroupDocs.Search for Java 如何配置搜尋 的全流程,從初始設定到即時更新與分散式索引。將這些模式套用於各行各業,即可打造快速、可擴展且可靠的文件搜尋解決方案。


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