Java full text search:使用 GroupDocs.Search 建立索引

快速解答

  • 什麼是 “java full text search”? 這是建立索引的過程,讓 Java 應用程式能在大量檔案中快速執行文字查詢。
  • 哪個函式庫可即時使用? GroupDocs.Search for Java 提供即用的索引、字典管理與查詢執行功能。
  • 需要授權嗎? 免費試用版適合評估;正式上線時需購買完整授權。
  • 可以自訂字元處理方式嗎? 當然可以——使用 alphabet dictionary 來定義自訂字元類型。
  • Maven 必須嗎? Maven 讓相依管理更簡便,但也可以直接下載 JAR 檔。

什麼是 java full text search 以及為何要管理 alphabet dictionary?

java full text search 索引會儲存文件的分詞表示,讓您能即時查找單字或片語。alphabet dictionary 告訴引擎如何處理每個字元(字母、數字、符號),直接影響分詞與搜尋相關性,尤其在特殊符號或語言特定規則時更為關鍵。

GroupDocs.Search 能在不將文件全部載入記憶體的情況下處理高達 10,000 份文件,提供次秒級的查詢回應。它允許完整掌控字元類型,支援 50+ 輸入與輸出格式,且可橫向擴展至多台伺服器,是企業級搜尋的最佳選擇。

前置條件

  • GroupDocs.Search for Java(最新發行版)。
  • 已在開發機上安裝 Java 17 或更新版本。
  • Maven 3.6+(或能手動加入 JAR)。

必要的函式庫、版本與相依性

  • GroupDocs.Search for Java – 最新穩定版。
  • 基本索引功能不需額外第三方函式庫。

環境設定需求

請確保您的環境支援 Maven。如尚未安裝 Maven,請從官方網站下載:Apache Maven。

知識前置條件

熟悉 Java 語法與檔案 I/O 會有幫助,但以下步驟說明會涵蓋所有必需內容。

設定 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>

直接下載

若不想使用 Maven,可從官方發行頁面取得最新 JAR 檔:GroupDocs.Search for Java releases。

取得授權的步驟

  1. 免費試用 – 先使用試用版探索全部功能。
  2. 暫時授權 – 申請臨時金鑰以延長測試時間。
  3. 完整授權 – 購買正式授權以獲得無限制使用權。

基本初始化與設定

建立指向索引資料夾的 Index 實例:

import com.groupdocs.search.*;

public class SearchIndexSetup {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\Index";
        Index index = new Index(indexFolder);
    }
}

實作指南

以下示範建置 java full text search 解決方案時最常用的操作流程。

建立或開啟索引

Index 類別是代表磁碟上可搜尋集合的核心物件。

import com.groupdocs.search.*;

String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\Index";
Index index = new Index(indexFolder);
  • 參數: indexFolder – 索引檔案所在的路徑。
  • 目的: 為後續的索引與查詢建立搜尋環境。

匯出 alphabet dictionary 至檔案

AlphabetDictionary 物件保存字元類型對應。匯出後可供日後重用或分析設定。

import com.groupdocs.search.dictionaries.*;

String fileName = "YOUR_OUTPUT_DIRECTORY\\Alphabet.dat";
index.getDictionaries().getAlphabet().exportDictionary(fileName);
  • 參數: fileName – 匯出字典的目標檔案。

清除 alphabet dictionary

在套用自訂規則前,先將字典重設為預設狀態:

import com.groupdocs.search.dictionaries.*;

if (index.getDictionaries().getAlphabet().getCount() > 0) {
    index.getDictionaries().getAlphabet().clear();
}
  • 目的: 移除先前定義的所有字元類型,確保從乾淨的基礎開始。

從檔案匯入 alphabet dictionary

還原先前儲存的字典設定:

import com.groupdocs.search.dictionaries.*;

index.getDictionaries().getAlphabet().importDictionary(fileName);
  • 參數: fileName – 包含字典的 .dat 檔案路徑。

在 alphabet dictionary 中設定字元類型

CharacterType 列舉定義分詞時字元的解讀方式。自訂特定字元的處理方式,例如將連字號視為單詞的一部份,而非分隔符。

import com.groupdocs.search.dictionaries.*;

if (index.getDictionaries().getAlphabet().getCharacterType('-') != CharacterType.Blended) {
    index.getDictionaries().getAlphabet().setRange(new char[] { '-' }, CharacterType.Blended);
}
  • 參數: 目標字元('-')與新的 CharacterType。
  • 為何重要: 調整字元類型可提升對連字號詞彙、ID 或自訂符號的搜尋相關性。

從資料夾索引文件

一次性將目錄中的所有檔案加入搜尋索引:

import com.groupdocs.search.*;

String documentsFolder = "YOUR_DOCUMENT_DIRECTORY";
index.add(documentsFolder);
  • 參數: documentsFolder – 包含欲索引文件的資料夾路徑。

在索引中搜尋

SearchResult 類別包含查詢回傳的匹配文件與摘要。執行查詢並取得結果:

import com.groupdocs.search.results.*;

String query = "Elliot-Murray-Kynynmound";
SearchResult result = index.search(query);
  • 參數: query – 您要搜尋的文字。
  • 結果: 包含匹配文件與摘要的 SearchResult 物件。

java full text search 的常見使用情境

  • 內容管理系統 (CMS): 加速文章與資產的檢索。
  • 法律文件庫: 即時定位條款或案例參考。
  • 研究圖書館: 為上千篇論文建立關鍵字即時搜尋。
  • 電商目錄: 透過自訂分詞提升商品搜尋體驗。
  • 客服門戶: 讓客服人員快速找到相關工單或知識庫文章。

效能考量

  • 增量更新: 只重新索引新增或變更的檔案,避免全量重建。
  • 查詢最佳化: 盡量簡潔查詢,避免過寬的萬用字元搜尋。
  • 資源監控: 大批次索引時留意記憶體使用,必要時調整 JVM 堆大小。
  • 字典大小: 只有在修改字典時才匯出/匯入,過多 I/O 會拖慢啟動速度。

常見問題

Q: 使用 GroupDocs.Search 的前置條件是什麼?
A: 安裝 Java 17+、Maven 3.6+(或下載 JAR),並加入 GroupDocs.Search 相依性。

Q: 如何取得正式環境的授權?
A: 先使用免費試用,申請暫時金鑰以延長測試,最後於 GroupDocs 入口網站購買完整授權。

Q: 我可以自訂 alphabet dictionary 中的字元類型嗎?
A: 可以——使用 setRange 或 set 方法為任意字元或範圍指派自訂的 CharacterType。

Q: 能否匯出與匯入 alphabet dictionary?
A: 完全可以——使用 exportDictionary 與 importDictionary 方法保存或共享字典設定。

Q: 此指南測試的是哪個版本?
A: 範例已於 GroupDocs.Search for Java 版本 25.4 進行驗證。


最後更新: 2026-09-06
測試版本: GroupDocs.Search for Java 25.4
作者: GroupDocs

相關教學