GroupDocs.SearchでJavaテキストをハイライト

モダンなエンタープライズアプリケーションでは、highlight text java は、生の検索結果を即座に読みやすいインサイトに変換するために不可欠です。法務レビュー ポータル、学術研究エンジン、カスタマーサポート ダッシュボードのいずれを構築していても、クエリ語句を見つけて視覚的に強調表示できることで、ユーザーは手動でスキャンする時間を大幅に削減できます。このチュートリアルでは、GroupDocs.Search for Java を使用して search documents java、index documents java を行い、全文書およびフラグメント単位のハイライトを数行のコードで実装する方法を示します。

クイック回答

  • 「search and highlight text」とは何ですか? ドキュメント内のクエリ語句を検索し、(例として背景色で)視覚的に強調表示することを指します。
  • この機能を提供するライブラリはどれですか? GroupDocs.Search for Java。
  • ライセンスは必要ですか? 無料トライアルで評価は可能ですが、本番環境で使用する場合はフルライセンスが必要です。
  • ハイライト色はカスタマイズできますか? はい、HighlightOptions を使用して任意の RGB 色を設定できます。
  • フラグメントハイライトはサポートされていますか? もちろんです。マッチ前後の語句数を指定して簡潔なスニペットを作成できます。

ドキュメント内で Java テキストをハイライトする方法

ドキュメント内で Java テキストをハイライトするには、まず適切な圧縮設定でソースファイルのインデックスを作成し、検索クエリで目的の語句を特定し、最後に各マッチをハイライトタグでラップした HTML、PDF、またはプレーンテキストとしてエクスポートします。この 3 ステップのプロセスにより、大規模コレクションでも高速かつ正確なハイライトが実現します。

  1. インデックスを作成 し、ストレージフットプリントを低く抑える圧縮設定を使用します。
  2. 検索を実行 して、ハイライトしたいクエリ文字列を指定します。
  3. 出力を生成 (HTML、PDF、またはプレーンテキスト)し、クエリ語句の出現箇所すべてをハイライトタグでラップします。

search and highlight text とは?

search and highlight text は、インデックス化されたコレクションを対象にクエリを走査し、該当ドキュメントを取得した後、出力(HTML、PDF など)内のクエリ語句の各出現箇所にマークを付けるプロセスです。この視覚的手がかりにより、エンドユーザーは関連情報を瞬時に見つけられます。

なぜ GroupDocs.Search for Java を使うのか?

GroupDocs.Search for Java は 高性能インデックス(Compression.High で最大 50 GB のインデックス)と、全文書およびカスタムフラグメントで機能する リッチなハイライト、さらに 30 種類以上のファイル形式(DOCX、PDF、PPTX、TXT など)への クロスフォーマットサポート を提供します。また、インクリメンタルインデックス に対応しており、全インデックスを再構築せずに新規ファイルを追加できるため、大規模導入時のダウンタイムを最大 80 % 削減できます。

前提条件

  • Java Development Kit (JDK) 8 以上。
  • 依存関係管理のための Maven。
  • IntelliJ IDEA または Eclipse などの IDE。
  • Java 構文の基本的な知識。

GroupDocs.Search for Java のセットアップ

pom.xml に GroupDocs リポジトリと依存関係を追加します:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-search</artifactId>
    <version>25.4</version>
</dependency>

公式サイトから最新の JAR を直接ダウンロードすることもできます: GroupDocs.Search for Java releases。

ライセンス取得

無料トライアルで開始するか、評価用に一時ライセンスを取得してください。本番環境ではフルライセンスを購入してすべての機能を有効化します。

実装ガイド

実装は 全文書でのハイライト と フラグメントでのハイライト の 2 つの実用的なセクションに分かれています。両セクションとも、GroupDocs.Search を使用して Java ドキュメントをハイライト するための必須手順を示します。

インデックス設定の構成

インデックス作成前に、ディスク使用量を最大 70 % 削減しつつ検索速度を維持できる高圧縮を設定します。

IndexSettings はインデックスがディスク上にどのように保存されるかを制御する構成オブジェクトです。Compression を Compression.High に設定するとこの最適化が有効になります。
Compression はインデックスファイルに適用されるデータ圧縮レベルを指定し、Compression.High は最大のサイズ削減を提供します。

全文書でのハイライト

Step 1: インデックスを作成しデータを投入

インデックスフォルダーを作成し、検索対象とするすべてのソースファイルを追加します。Index クラスは検索可能なコンテナを表します。

Step 2: 検索を実行しハイライトを適用

語句(例: ipsum)を検索し、ハイライトされたマッチを含む HTML ファイルを生成します。HighlightOptions でハイライト色やインラインスタイルの使用可否を指定します。

HighlightOptions では前景色・背景色に加えて、各ハイライト語句に適用する CSS クラスも定義できます。

HtmlHighlighter は指定されたオプションに基づきハイライト語句を含む HTML を生成します。
SearchResult にはマッチしたドキュメントの一覧と各語句の位置情報が格納されます。

直接的な回答: インデックスをロードし、search("ipsum") を呼び出し、取得した SearchResult と設定済みの HighlightOptions インスタンスを HtmlHighlighter に渡します。ハイライターは「ipsum」の各出現箇所を選択した背景色の <span> でラップした HTML を返します。

主要オプションの説明

  • Compression – 高圧縮でストレージを節約。
  • HighlightColor – 任意の RGB 値を UI カラーパレットに合わせて設定。
  • UseInlineStyles – false にすると、CSS で全体的にスタイル付けできるクリーンな HTML が生成されます。

フラグメントでのハイライト

Step 1: インデックスと検索(上記と同様)

同じインデックスと検索手順を使用し、Index と SearchResult オブジェクトを再利用します。

Step 2: フラグメントコンテキストとハイライトを定義

FragmentOptions でマッチ前後に表示する語句数(termsBefore と termsAfter)を指定し、スニペットの長さとコンテキストのバランスを調整します。

Step 3: ハイライトフラグメントを取得し書き出す

生成されたフラグメントを収集し、HTML ファイルに書き出します。各フラグメントは事前に設定した HighlightOptions に従ってハイライト済みです。

fragmentHighlighter は SearchResult と指定されたフラグメント・ハイライトオプションを使用してハイライトスニペットを作成するユーティリティです。

直接的な回答: SearchResult を取得した後、fragmentHighlighter.highlight(searchResult, fragmentOptions, highlightOptions) を呼び出します。このメソッドは、設定したコンテキスト語句数とハイライト色を適用した HTML スニペットのリストを返します。

実用的な活用例

  1. 法務文書レビュー – 数千件の契約書から条項や判例参照を瞬時にハイライト。
  2. 学術研究 – 数十の PDF や Word ファイルから重要用語を抽出し、文献レビュー時間を最大 60 % 短縮。
  3. カスタマーサポート – チケット履歴内の注文番号やエラーコードを特定し、エージェントの対応速度を向上。

パフォーマンス上の考慮点

  • インデックスサイズ – Compression.High によりディスクフットプリントが最大 70 % 縮小し、遅延への影響はほとんどありません。
  • フラグメントコンテキスト – termsBefore/After の値を大きくすると可読性は向上しますが、クエリあたり 10–15 ms のオーバーヘッドが追加される可能性があります。
  • メモリ管理 – 大規模コーパスをインデックス化する際は JVM ヒープを監視し、2 GB 超のデータセットではインクリメンタルインデックスを活用してメモリ使用量を 1 GB 未満に抑えることを検討してください。

よくある問題と解決策

  • インデックス作成エラー – ファイルパスを確認し、インデックスフォルダーへの読み書き権限があることを確認してください。
  • ハイライトが表示されない – UseInlineStyles が出力形式(HTML vs. PDF)と一致しているか確認します。
  • 色が適用されない – RGB 値が 0‑255 の範囲内であること、ビューアがインライン CSS または指定した CSS クラスを尊重していることを確認してください。

FAQ

Q: GroupDocs.Search for Java を使用するメリットは何ですか?
A: 高速でスケーラブルなインデックス作成、カスタマイズ可能なハイライト、30 以上のドキュメント形式をサポートし、500 ページのファイルを典型的なサーバーで 2 秒未満で処理できます。

Q: GroupDocs.Search を REST API と統合するには?
A: Spring Boot コントローラで検索・ハイライトメソッドを公開し、HTML スニペットまたはハイライトフラグメントを含む JSON ペイロードを返します。

Q: パスワード保護されたファイルは扱えますか?
A: はい、addDocument(filePath, password) でインデックスに追加する際にパスワードを指定します。

Q: ハイライトのマークアップを色以外にカスタマイズできますか?
A: もちろんです。options.setCssClass("myHighlight") で CSS クラスを割り当ててグローバルにスタイル付けしたり、ハイライト後に生成された HTML を加工したりできます。

Q: 本ガイドはどのバージョンで検証されていますか?
A: GroupDocs.Search 25.4 で検証済みです。

Q: ハイライトオプションをインラインスタイルではなく CSS クラスで使用するには?
A: options.setUseInlineStyles(false) を呼び出し、options.setCssClass("myHighlight") でクラスを定義します。

Q: PDF 出力で直接語句をハイライトする方法はありますか?
A: はい。GroupDocs.Search は PDF 入力をサポートし、ハイライターは HTML を生成します。この HTML を PDF ビューアに埋め込むか、GroupDocs.Conversion を使用して PDF に再変換できます。

最終更新日: 2026-09-27
テスト環境: GroupDocs.Search 25.4
作者: 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>
IndexSettings settings = new IndexSettings();
settings.setTextStorageSettings(new TextStorageSettings(Compression.High));
String indexFolder = "/path/to/your/document/directory/HighlightingInEntireDocument";
Index index = new Index(indexFolder, settings);
index.add("/path/to/your/documents");
SearchResult result = index.search("ipsum");

if (result.getDocumentCount() > 0) {
    FoundDocument document = result.getFoundDocument(0);
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/to/your/output/directory/Highlighted.html");
    
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    HighlightOptions options = new HighlightOptions();
    options.setHighlightColor(new Color(150, 255, 150)); // Custom green shade
    options.setUseInlineStyles(false); // Prefer CSS for styling
    
    index.highlight(document, highlighter, options);
}
String indexFolder = "/path/to/your/document/directory/HighlightingInFragments";
Index index = new Index(indexFolder, settings);
index.add("/path/to/your/documents");

SearchResult result = index.search("ipsum");
HighlightOptions options = new HighlightOptions();
options.setTermsBefore(5); // Include 5 terms before the match
options.setTermsAfter(5);   // Include 5 terms after the match
options.setHighlightColor(new Color(127, 200, 255)); // Custom blue shade
options.setUseInlineStyles(true); // Use inline styles for emphasis

FoundDocument document = result.getFoundDocument(0);
FragmentHighlighter highlighter = new FragmentHighlighter(OutputFormat.Html);

index.highlight(document, highlighter, options);
StringBuilder stringBuilder = new StringBuilder();
FragmentContainer[] fragmentContainers = highlighter.getResult();

for (FragmentContainer container : fragmentContainers) {
    String[] fragments = container.getFragments();
    
    if (fragments.length > 0) {
        stringBuilder.append("\n<br>").append(container.getFieldName()).append("<br>\n");
        
        for (String fragment : fragments) {
            stringBuilder.append(fragment).append("\n");
        }
    }
}

try {
    Files.write(Paths.get("/path/to/your/output/directory/Fragments.html"), stringBuilder.toString().getBytes());
} catch (IOException ex) {
    // Handle exceptions
}

関連チュートリアル