GroupDocs.Search for Javaでドキュメントをインデックスする方法
今日のデータ主導の世界では、ドキュメントのインデックス方法を効率的に行うことは、大量のファイルを扱うすべてのJava開発者にとって重要なスキルです。法的契約書、財務諸表、内部レポートを処理する場合でも、適切に構築された検索インデックスを使用すれば、数秒で正確な情報を見つけることができ、手動で何時間もスキャンする必要がなくなります。このチュートリアルでは、検索インデックスの作成、ドキュメントの追加、そしてGroupDocs.Search for Javaを使用したテキストベースとオブジェクトベースのクエリの実行方法を順を追って説明します。
クイック回答
- ドキュメントをインデックスする最初のステップは何ですか? インデックスファイルが保存されるフォルダーを指す
Indexインスタンスを作成します。 - インデックスにドキュメントを追加するメソッドはどれですか?
index.add("PATH_TO_DOCUMENTS")を呼び出してディレクトリをスキャンし、サポートされているファイルを取り込みます。 - 数値範囲を検索できますか? はい –
"400 ~~ 4000"のようなテキストクエリ、またはSearchQuery.createNumericRangeQueryを使用したオブジェクトクエリを使用します。createNumericRangeQueryメソッドは数値範囲クエリオブジェクトを作成します。 - ライセンスは必要ですか? 無料トライアルで評価できます。商用ライセンスを取得すると、すべての機能が利用可能になり、使用制限が解除されます。
- 必要なJavaバージョンはどれですか? JDK 8 以上がサポートされています。
GroupDocs.Searchでドキュメントをインデックスする方法とは?
ドキュメントをインデックスすると、各ファイルに対して検索可能なトークンストアが作成され、エンジンは毎回元のファイルを読み込むことなく一致項目を取得できます。この前処理ステップにより、生のコンテンツがミリ秒単位でクエリ可能な最適化されたインデックスに変換されます。インデックスは用語、位置、メタデータを保存し、すべてのサポート対象ドキュメントタイプに対して高速なフレーズ検索や近接検索を可能にします。
なぜGroupDocs.Search for Javaを使用するのか?
検索操作は、標準的な2CPU、8GB VM上で、10,000ファイル(平均1KB)コレクションに対して通常50 ms未満で完了します。このライブラリは 30以上の入力および出力フォーマット(PDF、DOCX、XLSX、PPTX、TXT、HTML など)をサポートしているため、追加のコンバータなしで事実上すべてのビジネス文書をインデックスできます。柔軟な API により、プレーンテキストクエリ、数値範囲、複雑なオブジェクトクエリを組み合わせることができ、インクリメンタル更新によりインデックス全体を再構築せずに新しいファイルを追加できます。
前提条件
- 依存関係管理のために Maven がインストールされていること。
- IntelliJ IDEA や Eclipse などの IDE。
- 基本的な Java 知識(OOP の概念、例外処理)。
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>
直接ダウンロード
最新の JAR は GroupDocs.Search for Java releases からダウンロードすることもできます。
ライセンス取得手順
- 無料トライアル – コストなしでライブラリを試す。
- 一時ライセンス – 拡張評価のために短期間のキーをリクエスト。
- 購入 – 本番環境で使用するためのフルライセンスを取得。
基本的な初期化と設定
インデックスに ドキュメントを追加 するには、まずインデックスファイルが保存されるフォルダーを指す Index オブジェクトを作成します:
Index はディスク上の検索可能なインデックスを表すコアクラスです。
import com.groupdocs.search.Index;
// Initialize the index by specifying a directory path
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\NumericRangeSearch");
この行は、ドキュメントを受け取る準備ができたインデックスを作成(または開く)します。
実装ガイド
ドキュメントの作成とインデックス化
インデックスにドキュメントを追加する方法
add メソッドはフォルダーをスキャンし、各ファイルの検索可能なデータを保存します。サポートされているすべてのドキュメントを再帰的に処理し、テキストとメタデータを抽出し、先に指定したインデックスフォルダーにトークンを書き込みます。
import com.groupdocs.search.Index;
// Initialize an index at the specified path
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\NumericRangeSearch");
// Add documents from a directory for indexing
index.add("YOUR_DOCUMENT_DIRECTORY");
- パラメータ: パス文字列はインデックス対象のファイルが格納されたフォルダーを指します。
- 目的: このステップの後、インデックスにはすべてのサポート対象ドキュメントタイプからのトークンが含まれ、コレクション全体に対する高速検索が可能になります。
テキストクエリ検索
テキストベースの数値範囲検索の実行方法
範囲を定義したシンプルな文字列で検索できます。エンジンは ~~ 演算子を「間」と解釈し、指定された範囲内の数値を含むすべてのドキュメントを返します。
import com.groupdocs.search.*;
import com.groupdocs.search.results.*;
// Define a query for numeric values within a specific range
String query1 = "400 ~~ 4000";
// Execute text-based search on indexed data
SearchResult result1 = index.search(query1);
- パラメータ: クエリ文字列
"400 ~~ 4000"はエンジンに 400 から 4000 の間の数値を検索させます。 - 戻り値:
SearchResultは一致したドキュメントのリストを保持し、一致したフラグメントをハイライトします。
オブジェクトクエリ検索
数値範囲のオブジェクトクエリの使用方法
オブジェクトベースのクエリは検索条件をプログラム的に制御でき、複数の条件を組み合わせたり、実行時に動的にクエリを構築したりできます。
import com.groupdocs.search.*;
import com.groupdocs.search.results.*;
// Create a numeric range query object
SearchQuery query2 = SearchQuery.createNumericRangeQuery(400, 4000);
// Perform search using the query object
SearchResult result2 = index.search(query2);
- パラメータ:
createNumericRangeQueryは開始整数と終了整数を受け取ります。 - 目的: 請求書合計、年齢、製品コードなどの数値フィールドで結果をフィルタリングする必要がある場合に最適です。
実用的な応用例
以下は、ドキュメントのインデックス方法が大きな変化をもたらす実際のシナリオです:
- 法務文書管理 – 数千件の契約書から条項、事件番号、日付を数秒で特定。
- 財務報告 – 各スプレッドシートをスキャンせずに、特定の金額範囲に該当する取引を抽出。
- 在庫管理 – 分散ファイルシステム全体でシリアル番号、バッチコード、SKU 範囲でアイテムを検索。
GroupDocs.Search をデータベース、クラウドストレージ、メッセージキューと統合することで、ドキュメントワークフローをさらに自動化できます。
パフォーマンスに関する考慮点
- 定期的なインデックス更新: 新しいファイルに対して
index.addを再実行し、インデックスを最新に保ちます。 - リソース管理: ヒープ使用量を監視します。大規模インデックスはチューニングされた JVM ガベージコレクション設定から恩恵を受けます。
- クエリ最適化: 複雑なフィルタにはオブジェクトクエリを使用し、不要なスキャンを減らして応答時間を改善します。
よくある問題と解決策
| 問題 | 発生原因 | 対策 |
|---|---|---|
| 検索結果が返らない | インデックスが作成されていない、またはフォルダー パスが間違っている | index.add が正しいディレクトリで実行され、インデックスフォルダーが書き込み可能であることを確認してください。 |
| インデックス作成中の OutOfMemoryError | 非常に大きなファイルまたはヒープが不足している | JVM の -Xmx 値を増やすか、ファイルを小さなバッチでインデックスしてください。 |
| サポートされていないファイル形式 | ファイルタイプが GroupDocs.Search に認識されない | 拡張子がサポートリスト(PDF、DOCX、XLSX、PPTX、TXT、HTML など)に含まれていることを確認してください。 |
よくある質問
Q: 既存のインデックスに新しいドキュメントを追加するにはどうすればよいですか?
A: 再度 index.add("NEW_DOCUMENT_PATH") を呼び出します。ライブラリはインデックス全体を再作成せずに新しいエントリをマージします。
Q: GroupDocs.Search はさまざまなファイル形式に対応していますか?
A: はい、30 以上の形式(PDF、DOCX、XLSX、PPTX、TXT、HTML など)をサポートしているため、事実上すべてのビジネス文書をインデックスできます。
Q: GroupDocs.Search を使用するためのシステム要件は何ですか?
A: Java 8+ ランタイム、適度なコレクションの場合は最低 2 GB の RAM(大規模セットでは 4 GB 以上が望ましい)、およびインデックスフォルダーへの読み書き権限が必要です。
Q: 検索パフォーマンスの問題をトラブルシュートするにはどうすればよいですか?
A: インデックスを最新の状態に保ち、クエリをプロファイルし、JVM のメモリ設定を見直してください。インデックス対象フィールド数を減らすか、オブジェクトクエリを使用することで実行速度も向上します。
Q: 同義語やファジーマッチングのサポートはありますか?
A: はい、SearchOptions クラスを使用して同義語辞書やファジー検索を有効にでき、関連性を損なうことなくマッチング範囲を拡大できます。SearchOptions クラスは同義語やファジーマッチングなど高度な検索動作を設定します。
最終更新日: 2026-08-10
テスト環境: GroupDocs.Search 25.4 for Java
作者: GroupDocs