提取 PDF 文本 Java – 使用 GroupDocs.Search 建立索引
在本實作指南中,您將了解 如何從 PDF 檔案中提取 pdf text java,將提取的內容序列化,並建立高效能的可搜尋索引。無論您是構建內部知識庫、合約搜尋入口網站,或是自訂搜尋引擎,以下步驟將帶您完成所有操作——從從 PDF 中抽取文字到執行強大的全文查詢。讓我們深入了解為何 GroupDocs.Search 讓整個流程順暢且具可擴展性。
快速解答
index.search 方法對已建立的索引執行查詢,並返回符合文件的清單以及相關性分數。
- 主要目的為何? 從 PDF 檔案中提取 pdf text java,並使用 GroupDocs.Search 建立可搜尋的文件索引。
- 使用哪個函式庫版本? GroupDocs.Search 25.4(或最新發行版)。
- 需要授權嗎? 開發階段可使用免費試用版;正式上線需購買完整授權。
- 可以索引 PDF 嗎? 可以——提取 PDF 文字並加入索引。
- 如何執行搜尋? 在加入資料後,使用
index.search(query)方法。
什麼是文件索引?
文件索引是從您的檔案中提取的可搜尋詞彙的結構化集合。它將每個詞彙映射到出現該詞的文件,從而在大型資料庫中實現快速全文搜尋,將查找時間從分鐘縮短至毫秒,同時支援排序與相關性功能。
為何在 Java 中使用 GroupDocs.Search?
GroupDocs.Search 支援 超過 50 種輸入與輸出格式,能在不將整個檔案載入記憶體的情況下索引 數百萬份文件,並提供具備布林、萬用字元與相近度運算子的 豐富查詢語言。這些量化的功能使其成為企業級搜尋解決方案的理想選擇。它亦內建語言偵測、詞幹分析與可自訂的分析器,以提升多語言內容的搜尋精確度。
前置條件
- GroupDocs.Search for Java(版本 25.4 或更新)。
- Java Development Kit (JDK) 與您的 GroupDocs 版本相容。
- IDE,例如 IntelliJ IDEA 或 Eclipse。
- 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 下載最新版本。
取得授權
- 免費試用 – 使用臨時授權測試所有功能。
- 購買 – 獲得完整存取權與優先支援。
如何從 PDF(及其他文件)提取文字
使用 Extractor 類別載入您的 PDF(或支援的文件),設定抽取選項,然後呼叫 extractText()。此單行呼叫會返回原始或格式化的文字,供索引使用。
Extractor 類別是 GroupDocs.Search 的核心元件,負責讀取文件並產生純文字或格式化文字。
// ```java
String documentPath = "YOUR_DOCUMENT_DIRECTORY/Lorem ipsum.pdf";
Extractor extractor = new Extractor();
Document document = Document.createFromFile(documentPath);
// ```java
ExtractionOptions extractionOptions = new ExtractionOptions();
extractionOptions.setUseRawTextExtraction(false); // Extract with formatting
ExtractedData extractedData = extractor.extract(document, extractionOptions);
提示: 若需要純文字且不保留格式,請設定
setUseRawTextExtraction(true)。
如何序列化抽取的資料
序列化會將抽取的文字物件轉換為位元組陣列,讓您能將其儲存至磁碟或透過網路傳輸,以便稍後索引。
SerializationUtil 工具提供靜態方法,可將物件轉換為位元組流,亦可反向轉換。
// ```java
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
extractedData.serialize(outputStream);
byte[] serializedArray = outputStream.toByteArray();
如何反序列化抽取的資料
當您準備建立索引時,將先前儲存的位元組陣列反序列化回原始的抽取物件。
deserialize 方法會還原抽取結果的完整狀態,確保在不同工作階段間不會遺失資料。
// ```java
ByteArrayInputStream inputStream = new ByteArrayInputStream(serializedArray);
ExtractedData deserializedData = ExtractedData.deserialize(inputStream);
如何建立文件索引
實例化 Index 物件,指定儲存資料夾,並設定索引選項,例如詞項向量與停用詞處理。
Index 類別代表可搜尋的容器,內含所有詞項、文件參考與中繼資料。
// ```java
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/SeparateDataExtraction";
com.groupdocs.search.Index index = new com.groupdocs.search.Index(indexFolder);
如何將資料加入索引並執行搜尋
使用 index.add() 將反序列化的抽取結果加入索引,接著使用 index.search() 進行查詢,即可取得即時結果。
add 方法會將文件的詞項註冊至索引,而 search 則對這些詞項執行查詢。
// ```java
ExtractedData[] dataToIndex = new ExtractedData[] { deserializedData };
index.add(dataToIndex, new IndexingOptions());
// ```java
String query = "ipsum";
SearchResult result = index.search(query);
專業提示: 使用
index.search("your query", SearchOptions)以微調相關性排序。
常見使用情境
- 文件管理系統 – 快速定位合約、發票或政策文件。
- 基於內容的搜尋引擎 – 為內部知識庫提供 Java 全文搜尋功能。
- 資料歸檔解決方案 – 索引歷史記錄以即時檢索。
效能考量
setStoreTermVectors(boolean) 方法設定是否在索引中儲存詞項向量,會影響索引大小與查詢效能。
- 記憶體管理: 處理超過 500 MB 的批次時,增加 JVM 堆積大小(例如
-Xmx4g)。 - 索引選項: 停用詞項向量(
setStoreTermVectors(false))可將索引大小減少最多 30%。 - 定期更新: 保持 GroupDocs.Search 為最新版本;每個次要發行版皆包含約 10‑15% 的平均速度提升。
常見問題
Q: 如何有效處理非常大的 PDF 檔案?
A: 使用 Extractor 串流讀取檔案並分塊處理;必要時亦可增加 JVM 堆積大小。
Q: 我可以自訂搜尋查詢語法嗎?
A: 可以——GroupDocs.Search 支援布林運算子、萬用字元與相近度搜尋。
Q: 若序列化失敗該怎麼辦?
A: 確認所有物件皆實作 Serializable,並捕捉 IOException 以記錄細節。
Q: 能否只索引文件的特定區段?
A: 完全可以——在索引前設定 ExtractionOptions 以過濾頁面或區段。
Q: 如何升級至較新版本的 GroupDocs.Search?
A: 在 pom.xml 中更新版本號,然後執行 mvn clean install;請檢閱遷移指南以了解可能的破壞性變更。
資源
- GroupDocs.Search for Java 版本發佈: GroupDocs.Search for Java releases
- 文件說明: GroupDocs Documentation
- API 參考: GroupDocs API Reference
- 下載: GroupDocs Downloads
- GitHub: GroupDocs GitHub Repository
- 免費支援: GroupDocs Forum
- 臨時授權: Obtain a Temporary License
最後更新: 2026-07-07
測試環境: GroupDocs.Search 25.4 for Java
作者: GroupDocs