検索結果のハイライト Java – 同期 & 非同期 インデックス作成

強力な GroupDocs.Search ライブラリを使用して highlighting search results Java によって Java アプリケーションを強化しましょう。少数のファイルでも大規模なリポジトリでも、同期インデックスと非同期インデックスの両方をマスターすれば、アプリケーションスレッドをブロックせずに高速で正確な結果を提供できます。

Quick Answers

  • “highlight search results Java” とは何ですか? 検索結果に一致した語句を視覚的なヒント(例: HTML の <mark> タグ)で表示し、ユーザーが各ドキュメント内でクエリがどこに現れるかを確認できるようにすることです。
  • 同期インデックスはいつ使用すべきですか? 小規模から中規模のデータセットで、追加されたドキュメントを即座に利用可能にしたい場合に適しています。
  • 非同期インデックスはいつ好ましいですか? 大量のドキュメントコレクションを処理する場合や、UI スレッド上でアプリケーションの応答性を保ちたい場合に最適です。
  • ライセンスは必要ですか? 開発用には無料トライアルで十分です。フルライセンスを取得すると高度な機能が解放され、使用制限が解除されます。
  • サポートされている Java バージョンは? Java 8 以降。

“highlight search results Java” とは?

Java で検索結果をハイライトするとは、GroupDocs.Search が返す生のマッチ情報に対して一致した語句を HTML(または別のマークアップ)でラップし、UI やウェブページに表示したときに目立たせることを指します。これにより、各ヒットのコンテキストが瞬時に示され、ユーザー体験が向上します。

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

GroupDocs.Search は高性能で言語に依存しないエンジンを提供し、以下をサポートします:

  • リアルタイムのインデックス作成と検索
  • 大規模ワークロード向けの非同期処理
  • 組み込みの結果ハイライト機能
  • 多言語およびカスタムアナライザーのサポート

これらの機能により、コンテンツ管理システム、eコマースカタログ、エンタープライズ文書リポジトリなどに最適です。

前提条件

開始する前に以下を確認してください:

  • Java Development Kit(JDK 8 以上)がインストールされていること。
  • IntelliJ IDEA または Eclipse などの IDE があること。
  • インデックス対象のドキュメントが格納されたフォルダーが用意されていること。
  • 依存関係管理に Maven を使用する(または JAR を手動でダウンロード)。

必要なライブラリと依存関係

Maven プロジェクトに GroupDocs.Search を追加します:

<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 から最新バージョンを取得してください。

環境設定

  • JAVA_HOME が互換性のある JDK を指していることを確認します。
  • IDE でプロジェクトを作成し、上記の Maven 設定を追加します。
  • documents/ などのディレクトリを用意し、サンプルのテキスト、PDF、Word ファイルを配置します。

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

  1. ライブラリのインストール – 上記の Maven スニペットを使用するか、GroupDocs から JAR をダウンロードします。
  2. ライセンスの取得 – まずはトライアルライセンスを取得し、運用開始時に本ライセンスへアップグレードします。
  3. インデックスの初期化 – 以下のスニペットはインデックスフォルダーを作成(または開く)方法を示しています:
import com.groupdocs.search.Index;

// Create an index in the specified folder
Index index = new Index("path/to/index/folder");

highlight search results Java の実装 – 同期インデックス作成

同期インデックスはドキュメントを即座に処理し、追加されたファイルをすぐに検索可能にします。

手順 1: インデックス作成とエラーハンドリングの設定

import com.groupdocs.search.*;
import com.groupdocs.search.events.*;
import java.nio.file.Paths;

public class SynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/SynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

手順 2: ドキュメントの追加と検索実行

        // Add documents
        index.add(documentsFolder);

        // Perform a search
        String query = "tincidunt";
        SearchResult result = index.search(query);

手順 3: 結果処理と highlight search results Java の実行

        for (int i = 0; i < result.getDocumentCount(); i++) {
            FoundDocument document = result.getFoundDocument(i);
            System.out.println(": Document: " + document.getDocumentInfo().getFilePath());
            System.out.println(": Occurrences: " + document.getOccurrenceCount());
        }

        // Highlight results
        if (result.getDocumentCount() > 0) {
            FoundDocument document = result.getFoundDocument(0);
            String path = YOUR_OUTPUT_DIRECTORY + "/Highlighted.html";
            OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, path);
            DocumentHighlighter highlighter = new DocumentHighlighter(outputAdapter);
            index.highlight(document, highlighter);
        }
    }
}

DocumentHighlighter は一致した語句を自動的に <mark> タグ(または設定した任意の形式)でラップし、ハイライトされた検索結果 を表示用に提供します。

highlight search results Java の実装 – 非同期インデックス作成

数千件のファイルを扱う場合、メインスレッドをブロックするのは望ましくありません。非同期インデックスはエンジンをバックグラウンドで動作させます。

手順 1: イベントリスナー付きインデックスの設定

import com.groupdocs.search.*;
import com.groupdocs.search.events.*;

public class AsynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AsynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors and status changes
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

        index.getEvents().StatusChanged.add(new EventHandler<BaseIndexEventArgs>() {
            @Override
            public void invoke(Object sender, BaseIndexEventArgs args) {
                if (args.getStatus() != IndexStatus.Ready || args.getStatus() == IndexStatus.Failed) {
                    System.out.println("Indexing completed.");
                }
            }
        });

手順 2: 非同期モードを有効化してインデックス作成開始

        // Set up async indexing options
        IndexingOptions options = new IndexingOptions();
        options.setAsync(true);

        // Add documents asynchronously
        index.add(documentsFolder, options);
    }
}

インデックス構築中でもアプリケーションは他のリクエストを処理し続けられます。StatusChanged イベントが Ready を報告したら、安全に検索を実行し、highlight search results Java を取得できます。

index documents java の実践的ヒント

  • バッチサイズ: 大規模コレクションの場合、フォルダーを小さなバッチに分割してメモリスパイクを防止します。
  • ファイルフィルター: IndexingOptions.setFileExtensions を使用し、必要な形式(例: .pdf, .docx)だけを対象にします。
  • 再インデックス: ドキュメントが変更されたときは、インデックス全体を再構築するのではなく index.update(documentPath) を呼び出します。

パフォーマンス考慮事項

  • メモリ: ヒープ使用量に注意し、 大量の大きなファイルを処理する場合は -Xmx を増やします。
  • CPU: 非同期インデックスは負荷を分散しますが CPU を消費します。JVisualVM で監視してください。
  • 結果ハイライト: ハイライト処理にはわずかなオーバーヘッドが発生します。結果を頻繁に表示する場合は生成された HTML をキャッシュすると効果的です。

よくある質問

Q: 同期インデックスと非同期インデックスを同一アプリケーションで併用できますか?
A: はい。小規模で頻繁に更新されるデータは同期インデックス、バルクインポートやバックグラウンドジョブは非同期インデックスで使い分けます。

Q: ハイライトのスタイルはどうカスタマイズしますか?
A: 一致した語句の周囲に任意の HTML、CSS、XML タグを書き込むカスタム DocumentHighlighter 実装を提供してください。

Q: GroupDocs.Search が標準でサポートしているファイルタイプは?
A: テキスト、PDF、DOC/DOCX、XLS/XLSX、PPT/PPTX、HTML など多数。組み込みパーサーによりさらに多くの形式を処理できます。

Q: 複数言語を同時に検索できますか?
A: 可能です。インデックス作成時に適切な Analyzer を設定すれば、マルチランゲージ検索が利用できます。

Q: インデックスフォルダーのセキュリティはどう確保すればよいですか?
A: 保護されたディレクトリにインデックスを保存し、ファイルシステムのアクセス権を適切に設定します。また、ライブラリのセキュリティ機能を使用してインデックスを暗号化することも検討してください。


最終更新日: 2026-02-08
テスト環境: GroupDocs.Search 25.4 for Java
作者: GroupDocs