使用 GroupDocs.Search 建立 Java 搜尋索引 – 指南
您是否在努力有效管理龐大的文件集合?在沒有合適工具的情況下搜尋無數檔案會相當艱難。使用 GroupDocs.Search for Java 建立 search index java 能為您提供一個強大且可擴展的索引與檢索方案,將混亂的檔案庫轉變為可搜尋的知識庫。本指南將逐步說明從設定網路、部署節點到抽取特定文件內容的每個步驟,讓您快速上手。
快速解答
- GroupDocs.Search 的主要目的為何? 它在 Java 中提供快速、可擴展的索引與全文搜尋,適用於大型文件集合。
- 需要哪個版本的 Java? 建議使用 Java 8 或更高版本。
- 試用時需要授權嗎? 是的——取得臨時授權以在評估期間解鎖全部功能。
- 可以擴充搜尋網路嗎? 當然可以;您可以部署多個節點以分散索引與查詢負載。
- 如何取得特定文件的文字內容? 在透過路徑或中繼資料定位文件後,使用
searcher.getDocumentText()。
什麼是「create search index java」?
在 Java 中建立搜尋索引即是構建一個資料結構,將詞彙與片語對應到包含它們的文件。GroupDocs.Search 會自動化此過程,處理分詞、儲存與快速查找,讓您專注於業務邏輯,而不必關心底層索引細節。
為什麼要在 Java 中使用 GroupDocs.Search?
- 效能: 優化演算法即使在數百萬檔案上也能提供近即時的搜尋結果。
- 可擴展性: 可部署多節點搜尋網路以平衡負載。
- 彈性: 開箱即支援數十種文件格式(PDF、DOCX、TXT 等)。
- 易於整合: 簡單的 Maven 設定與清晰的 Java API,對開發者友好。
前置條件
在開始之前,請確保已滿足以下需求:
必要的函式庫與相依性
要在 Java 中使用 GroupDocs.Search,請於 pom.xml 中加入 Maven 相依性,並設定 GroupDocs 倉庫:
<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 下載最新版本。
環境設定需求
確保已安裝相容的 JDK(建議 Java 8 或以上),開發環境需支援 Maven 專案。
知識前提
熟悉 Java 程式設計並具備基本的 Maven 專案設定知識,將有助於順利跟隨本教學。
設定 GroupDocs.Search for Java
在 Java 專案中整合 GroupDocs.Search 需要以下幾個關鍵步驟:
- Maven 設定:如上所示於
pom.xml中加入必要的倉庫與相依性。 - 取得授權:取得臨時授權以在無限制的情況下探索 GroupDocs.Search 的全部功能。前往 GroupDocs Temporary License 了解更多細節。
基本初始化
在 Java 應用程式中初始化 GroupDocs.Search,首先建立基本設定:
import com.groupdocs.search.*;
public class SearchSetup {
public static void main(String[] args) {
// Create an index
Index index = new Index("YOUR_INDEX_DIRECTORY");
// Add documents to the index
index.add("YOUR_DOCUMENT_DIRECTORY");
System.out.println("Indexing completed.");
}
}
將 "YOUR_INDEX_DIRECTORY" 與 "YOUR_DOCUMENT_DIRECTORY" 替換為實際的目錄路徑。此簡易設定會建立索引並加入文件,為後續更複雜的操作做好準備。
實作指南
以下將實作分為三大功能:設定配置、部署搜尋網路與網路文件檢索。
功能 1:設定配置
概述
此功能示範如何以基礎路徑與埠號設定搜尋網路,為索引環境奠定基礎。
import com.groupdocs.search.common.*;
import com.groupdocs.search.scaling.configuring.*;
public class ConfigurationSetup {
public static void main(String[] args) {
String basePath = "YOUR_DOCUMENT_DIRECTORY"; // Set your document directory here
int basePort = 49108; // Port number for the configuration
// Configure the search network with provided path and port.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
}
}
說明:ConfiguringSearchNetwork.configure 方法會使用指定的文件目錄與埠號建立環境,您可依專案需求自行調整參數。
功能 2:部署搜尋網路
概述
部署搜尋網路即是初始化能處理文件索引與檢索的節點。
import com.groupdocs.search.common.*;
import com.groupdocs.search.scaling.*;
public class SearchNetworkDeploymentFeature {
public static void main(String[] args) {
String basePath = "YOUR_DOCUMENT_DIRECTORY"; // Set your document directory here
int basePort = 49108; // Port number for deployment
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
// Deploy the search network using given path and port.
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
}
}
說明:deploy 方法會根據先前的設定初始化節點。每個節點可獨立處理索引的一部份,從而實現可擴充性。
功能 3:網路文件檢索
概述
從符合特定文字條件的搜尋網路中取得文件。
import com.groupdocs.search.common.*;
import com.groupdocs.search.scaling.*;
import java.util.ArrayList;
import java.util.Arrays;
public class NetworkDocumentRetrievalFeature {
public static void main(String[] args) {
// Assuming masterNode is already initialized and contains documents.
SearchNetworkNode masterNode = null; // Placeholder: Initialize your search network node here
String containsInPath = "English.txt";
getDocumentText(masterNode, containsInPath);
}
public static void getDocumentText(SearchNetworkNode node, String containsInPath) {
Searcher searcher = node.getSearcher();
ArrayList<NetworkDocumentInfo> documents = new ArrayList<>();
int[] shardIndices = node.getShardIndices();
for (int i = 0; i < shardIndices.length; i++) {
int shardIndex = shardIndices[i];
NetworkDocumentInfo[] infos = searcher.getIndexedDocuments(shardIndex);
documents.addAll(Arrays.asList(infos));
for (NetworkDocumentInfo info : infos) {
NetworkDocumentInfo[] items = searcher.getIndexedDocumentItems(info);
documents.addAll(Arrays.asList(items));
}
}
for (NetworkDocumentInfo document : documents) {
if (document.getDocumentInfo().toString().contains(containsInPath)) {
StringOutputAdapter outputAdapter = new StringOutputAdapter(OutputFormat.PlainText);
searcher.getDocumentText(document, outputAdapter);
System.out.println(outputAdapter.getResult());
break;
}
}
}
}
說明:此功能會遍歷分片以尋找包含指定文字的文件,searcher.getDocumentText 方法會抽取並顯示匹配的內容。
實務應用
- 企業文件管理 – 在大型組織中簡化文件檢索,提高工作效率。
- 法律文件搜尋 – 在龐大的案例檔案或法律圖書館中快速定位相關條文。
- 圖書館目錄系統 – 為書籍、期刊及其他媒體的目錄條目提供高效搜尋功能。
效能考量
為了最佳化 GroupDocs.Search 的實作,請留意以下要點:
- 資源管理 – 監控記憶體使用情況,避免索引過程出現瓶頸。
- 可擴展性 – 使用多節點分散負載,提升整體效能。
- 索引最佳化 – 定期更新與最佳化索引,以加快搜尋回應速度。
常見問題與解決方案
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 索引期間發生 Out‑of‑Memory 錯誤 | 大檔案一次性載入 | 啟用增量索引或增加 JVM 堆積大小 (-Xmx)。 |
| 搜尋未返回結果 | 新增文件後未刷新索引 | 呼叫 index.update() 或重新啟動節點以重新載入索引。 |
| 部署節點時埠號衝突 | 其他服務佔用了相同埠號 | 選擇未使用的 basePort 值,或調整防火牆規則。 |
常見問答
Q: 如何以程式方式建立 search index java?
A: 使用 Index 類別指向目錄,然後呼叫 index.add("<document_folder>"),即可在磁碟上建立可搜尋的索引。
Q: 能否在不重新建置的情況下向現有索引加入新文件?
A: 可以——只需在現有的 Index 實例上呼叫 index.add("<new_document_folder>"),函式庫會自動合併新檔案。
Q: 預設支援哪些檔案格式?
A: GroupDocs.Search 支援超過 50 種格式,包括 PDF、DOCX、TXT、PPTX 以及多種影像類型。
Q: 是否能同時在多個節點上執行搜尋?
A: 絕對可以。部署搜尋網路後,各節點會共享分片資訊,單一查詢即可分散至所有節點執行。
Q: 如何保護搜尋網路的安全性?
A: 為節點間通訊使用 TLS/SSL,並在公開搜尋 API 時強制驗證 token。
常見問答集
實作 GroupDocs.Search for Java 的關鍵前提是什麼?
必須具備 Java 8 以上、Maven 設定、GroupDocs.Search 相依性以及有效的授權。如何在 Java 中使用 GroupDocs.Search 設定搜尋網路?
呼叫ConfiguringSearchNetwork.configure(),傳入文件路徑與埠號即可完成環境設定。可以部署多個節點以擴充搜尋網路嗎?
可以,使用SearchNetworkDeployment.deploy()部署多節點,可提升可擴充性與負載分配。搜尋網路在處理大量文件時的表現如何?
只要適當部署節點並進行索引最佳化,即可高效處理龐大集合,提供快速檢索。如何取得包含特定文字的文件內容?
在網路節點內使用searcher.getDocumentText(),即可抽取並顯示符合條件的內容。
結論
透過本教學,您已掌握如何 create search index java 專案,使用 GroupDocs.Search 建立可擴充的搜尋網路,並即時取得文件內容。將這些模式套用於您的應用程式,即可為處理海量文件庫的使用者提供快速、可靠的搜尋體驗。
最後更新: 2026-03-23
測試版本: GroupDocs.Search 25.4
作者: GroupDocs