GroupDocs.Search for Java を使用した文字認識付きインデックスの作成方法
現代の文書が大量に扱われるアプリケーションでは、テキストのニュアンス(ハイフン、アンダースコア、言語固有の記号など)を考慮した インデックスの作成方法 が、迅速かつ正確な検索に不可欠です。このチュートリアルでは、GroupDocs.Search for Java における文字認識の設定方法を解説し、通常文字(文字、数字、アンダースコア)とブレンド文字(例:ハイフン)の両方をカバーします。最後まで読むと、OCR や画像検索シナリオに合わせて、法的ケース番号、ソースコードリポジトリ、マルチリンガル PDF など、あらゆるニーズに合ったインデックスを作成できるようになります。
クイック回答
- “create custom search index” とは何ですか? インデックスを構成し、特定の記号を文字またはブレンド文字として扱い、無視しないようにすることを意味します。
- 使用しているライブラリはどれですか? GroupDocs.Search for Java(執筆時点のバージョンは v25.4)。
- ライセンスは必要ですか? 開発には無料トライアルで動作しますが、本番環境では有料ライセンスが必要です。
- PDF と画像の両方をインデックスできますか? はい。適切に構成すれば、GroupDocs.Search は画像と PDF の OCR をサポートします。
- Maven は必須ですか? Maven は依存関係管理の推奨方法ですが、Gradle や手動で JAR を使用することも可能です。
カスタム検索インデックスとは?
カスタム検索インデックスを使用すると、検索エンジンが文字をどのように解釈するかを定義できます。デフォルトでは多くの記号が無視されるため、ケース番号(2023-AB-456)やコードスニペット(my_variable)のようなものがマッチしなくなることがあります。アルファベット辞書を調整することで、エンジンが検索可能なテキストとして扱う内容を完全にコントロールできます。
法的ケース番号のために通常文字とブレンド文字を設定する理由は?
- 通常文字(文字、数字、アンダースコア)は個別にトークン化され、識別子の完全一致検索を可能にします。
- ブレンド文字(ハイフン、スラッシュ)は関連するトークンを一緒に保持し、ケース番号、製品コード、ファイルパスなどが不要に分割されるのを防ぎます。
- この設定により、トークンの断片化が減少し、OCR 生成コンテンツの関連性が向上するため、検索インデックスのパフォーマンスが最適化されます。
前提条件
- JDK 8 以上がインストールされていること。
- 依存関係管理のための Maven。
- GroupDocs.Search for Java ライブラリへのアクセス(Maven もしくは公式サイトからダウンロード)。
必要なライブラリと依存関係
pom.xml にリポジトリと依存関係のエントリを追加します(以下参照)。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 からもダウンロードできます。
ライセンス取得
- Free Trial – 初期の実験に最適です。
- Temporary License – 長期の開発サイクルに便利です。
- Production License – 商用展開には必須です。
公式ポータルからライセンスを取得してください: GroupDocs.
基本的な初期化
以下のスニペットは、空のインデックスを作成するために必要な最小限のコードを示しています。そのまま保持してください。後でこの上に構築します。
import com.groupdocs.search.*;
public class GroupDocsSearchSetup {
public static void main(String[] args) {
String indexFolder = "YOUR_OUTPUT_DIRECTORY";
String documentFolder = "YOUR_DOCUMENT_DIRECTORY";
Index index = new Index(indexFolder);
System.out.println("GroupDocs.Search setup completed!");
}
}
GroupDocs.Search for Java の設定
Maven によるインストール
Prerequisites セクションの Maven 設定がすべてです。追加したら、mvn clean install を実行してバイナリを取得してください。
環境設定要件
- ディスク上に index フォルダー と document フォルダー が存在することを確認してください。
- 絶対パスを使用するか、IDE が相対パスを正しく解決できるように設定してください。
実装ガイド
以下では、通常文字 と ブレンド文字 の 2 つの機能を順に説明します。各機能は同じパターンに従います—パスを定義し、インデックスを作成し、文字辞書を設定し、最後にドキュメントをインデックス化します。
機能 1 – 通常文字
概要
通常文字は独立したトークンとして扱われます。数字、文字、アンダースコアをそのまま検索可能にしたい場合に最適です。
手順実装
1️⃣ パスの設定
インデックスの保存先とソースドキュメントの場所を定義します。
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterTypes/RegularCharacters";
String documentFolder = "YOUR_DOCUMENT_DIRECTORY";
2️⃣ インデックスの作成と設定
インデックスをインスタンス化し、事前に設定されたアルファベット構成をクリアします。
Index index = new Index(indexFolder);
index.getDictionaries().getAlphabet().clear();
3️⃣ 通常文字の定義
数字、ラテン文字、アンダースコアを含む文字配列を作成します。
StringBuilder sb = new StringBuilder();
for (char i = 0x0030; i <= 0x0039; i++) { // Digits
sb.append(i);
}
for (char i = 0x0041; i <= 0x005A; i++) { // Latin capital letters
sb.append(i);
}
sb.append(0x005F); // Underscore
for (char i = 0x0061; i <= 0x007A; i++) { // Latin small letters
sb.append(i);
}
// Convert to character array and set as alphabet range
char[] characters = new char[sb.length()];
sb.getChars(0, sb.length(), characters, 0);
index.getDictionaries().getAlphabet().setRange(characters, CharacterType.Letter);
4️⃣ ドキュメントのインデックス化
ソースフォルダー内のすべてのファイルを新しく設定したインデックスに追加します。
index.add(documentFolder);
機能 2 – ブレンド文字
概要
ブレンド文字(ハイフンなど)はしばしば 2 つの単語を結びつけます。ブレンド としてマークすることで、インデックス作成時にエンジンは周囲のトークンを一緒に保持します。
手順実装
1️⃣ パスの設定
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterTypes/BlendedCharacters";
String documentFolder = "YOUR_DOCUMENT_DIRECTORY";
2️⃣ インデックスの作成と設定
Index index = new Index(indexFolder);
3️⃣ ブレンド文字の定義
ここでは、ハイフンをブレンド文字として扱うよう辞書に指示します。
index.getDictionaries().getAlphabet().setRange(new char[] { '-' }, CharacterType.Blended);
4️⃣ ドキュメントのインデックス化
index.add(documentFolder);
実用的な応用例
ユースケース 1 – 法務文書管理
法務ファイルには 2023-AB-456 のようなケース番号が含まれることが多いです。アンダースコアとハイフンを設定することで、識別子が分割されずに正確な一致が返され、法的ケース番号の検索を効率的に行えます。
ユースケース 2 – ソースコードリポジトリ
開発者は、アンダースコア(my_variable)やハイフン(my-function)が意味を持つコードスニペットを検索する必要があります。カスタム文字認識により、検索エンジンがこれらの記号を正しく扱うようになります。
ユースケース 3 – 多言語データセット
追加のアルファベットを使用する言語を扱う場合、Unicode 文字セットを拡張してそれらの範囲を含めることで、正確なクロスランゲージ検索結果を保証できます。
ユースケース 4 – PDF 画像のインデックス化
スキャンした PDF や画像ファイルをインデックス化する場合、OCR の出力には混在した文字が含まれることが多いです。通常文字とブレンド文字を適切に設定することで、画像ベースのコンテンツに対する 検索インデックスのパフォーマンスが最適化 されます。
パフォーマンス考慮事項
- リソース管理 – ヒープ使用量に注意してください。大規模インデックスはインクリメンタルコミットの恩恵を受けます。
- ガベージコレクション – 終了時に
Indexオブジェクトを解放し、JVM にメモリ回収をさせます。 - インデックス最適化 – 定期的に
index.optimize()(利用可能な場合)を呼び出してインデックスを圧縮し、クエリ速度を向上させます。
結論
これで、GroupDocs.Search for Java を使用して、通常文字とブレンド文字を区別する インデックスの作成方法 が分かりました。この細かな制御により、法務、開発、または多言語環境に合わせた OCR 対応の高性能検索ソリューションを構築できるようになります。
次のステップ
- ラテン文字以外のアルファベット用に追加の Unicode 範囲を試してみてください。
- 文字設定をステミングや同義語など、他の GroupDocs.Search 機能と組み合わせます。
- インデックスを REST API に統合し、フロントエンドアプリケーションに検索機能を提供します。
よくある質問
Q: CharacterType.Letter の目的は何ですか?
A: インデックスに対し、提供された文字を通常の文字として扱うよう指示し、インデックス作成時に個別にトークン化されます。
Q: 同じインデックスで通常文字とブレンド文字を混在させられますか?
A: はい。各タイプに対して setRange を呼び出すだけで、辞書は両方の設定を同時に処理します。
Q: アルファベットを変更した後、インデックスを再構築する必要がありますか?
A: 必要です。文字辞書の変更はトークン化に影響するため、新しいルールを適用するにはドキュメントを再インデックス化する必要があります。
Q: 定義できるカスタム文字の数に制限はありますか?
A: ライブラリは Unicode 全域をサポートしていますが、極端に大量の文字を追加するとパフォーマンスが低下する可能性があるため、実際に必要な文字に限定してください。
Q: これが OCR の精度にどのように影響しますか?
A: インデックスの文字セットを OCR エンジンの出力と合わせることで、偽陰性を減らし、検索全体の関連性を向上させます。
最終更新日: 2026-03-17
テスト環境: GroupDocs.Search 25.4 for Java
作者: GroupDocs