java フルテキスト検索を GroupDocs.Search で実装する方法

データ駆動型アプリケーションの時代に、java full text search は膨大な文書コレクションを即座に検索可能なナレッジベースに変換するために不可欠です。エンタープライズ向けポータルを構築する場合でも、軽量デスクトップユーティリティを作成する場合でも、適切に構成された検索ネットワークはクエリ遅延を秒単位からミリ秒単位に削減し、データが増加しても結果の関連性を保ちます。本チュートリアルでは、GroupDocs.Search for Java の導入、検索対象ファイルの追加、ノード上のディレクトリ設定、リアルタイムインデックスの有効化について説明し、手動操作なしでインデックスを常に最新に保つ方法を紹介します。

Why this matters: java full text search インデックスはクエリ遅延を削減し、データ量に応じてスケールし、Web ポータル、デスクトップアプリ、クラウドマイクロサービスなど、あらゆる Java‑based ソリューションに強力なフルテキスト機能を提供します。

クイック回答

  • GroupDocs.Search の主な目的は何ですか? 分散ネットワーク上で文書をインデックス化および検索する、スケーラブルな java 検索エンジンを提供します。
  • どのバージョンを使用すべきですか? 新規プロジェクトには最新の安定版リリース(例: 25.4)を推奨します。
  • ライセンスは必要ですか? 30 日間の無料トライアルが利用可能です。製品環境で使用するには永続ライセンスが必要です。
  • ファイルとディレクトリの両方を追加できますか? はい – addFiles と addDirectories ヘルパーを使用してコンテンツを取り込みます。
  • 必要な Java バージョンは何ですか? Java 8 以上、依存関係管理には Maven が必要です。
  • リアルタイムインデックス java はどのように機能しますか? ノードイベントを購読することで、ファイルが変更された際に自動的に再インデックスをトリガーできます。

“create searchable index java” とは何ですか?

Java で検索可能なインデックスを作成することは、用語をそれを含む文書にマッピングするデータ構造を構築し、迅速なフルテキストクエリを可能にすることを意味します。GroupDocs.Search for Java は重い処理を抽象化し、文書の投入と検索動作のチューニングに集中できるようにします。

GroupDocs.Search for Java を使用する理由

GroupDocs.Search は水平にスケールする java 検索エンジンを提供し、50 以上の入力・出力フォーマットをサポートし、イベント駆動型インデックスを提供します。複数ノードを展開することでインデックス作業負荷を分散し、組み込みのヘルスチェックによりネットワークの信頼性を維持します。また、RESTful API とカスタマイズ可能なアナライザーを提供し、関連性を細かく調整できます。

前提条件

  • JDK 8+ が開発マシンにインストールされていること。
  • IntelliJ IDEA や Eclipse などの IDE。
  • Java と Maven の基本的な知識。
  • GroupDocs.Search for Java ライブラリへのアクセス(ダウンロードまたは 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>

Pro tip: 公式リリースページでバージョン番号を最新に保ってください。

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

ライセンス取得

  • Free trial: 30 日間の評価。
  • Temporary license: 延長テスト用にリクエスト。
  • Purchase: 本番環境での導入には購入が必要です。

基本的な初期化

インデックスファイルが保存されるフォルダーを指し、基本通信ポートを定義する構成オブジェクトを作成します:

import com.groupdocs.search.Configuration;

class InitializeSearch {
    public static void main(String[] args) {
        String basePath = "your/base/path";
        int basePort = 8080;
        
        Configuration config = new ConfiguringSearchNetwork().configure(basePath, basePort);
        // Use this configuration for subsequent operations
    }
}

GroupDocs.Search を使用して searchable index java を作成する方法

SearchConfiguration オブジェクトをロードし、SearchNetworkNode を起動し、node.getIndexer().addFiles(...) を呼び出してインデックスを構築します。このワンラインパターンにより、完全に機能する java full text search ネットワークが起動し、即座にクエリを受け付けられるようになります。その後、同じ base path とポート範囲を共有するノードを追加することでスケールできます。

機能 1 – 設定とネットワーク構成

SearchConfiguration クラスはノード起動に必要なすべての設定を保持します。

import com.groupdocs.search.Configuration;
import com.groupdocs.search.scaling.*;

class ConfiguringSearchNetwork {
    public static Configuration configure(String basePath, int basePort) {
        // Configure the search network with specified base path and port
        return new Configuration(basePath, basePort);
    }
}
  • basePath – インデックスデータが永続化されるディレクトリ。
  • basePort – 開始ポート。各ノードはこの値からインクリメントします。

機能 2 – 検索ネットワークノードの展開

SearchNetworkNode は任意のマシンで実行できる個別のインデックスサービスを表します。

import com.groupdocs.search.scaling.*;

class SearchNetworkDeployment {
    public static SearchNetworkNode[] deploy(String basePath, int basePort, Configuration configuration) {
        // Deploy nodes based on the provided configuration
        return new SearchNetworkNode[]{new SearchNetworkNode()};
    }
}

SearchNetworkNode はインデックスをホストし、追加/削除イベントを処理し、検索クエリに応答するコアランタイムコンポーネントです。複数ノードを展開することで、水平にスケールする create java full text search クラスタを作成できます。

機能 3 – ノードイベントの購読

リアルタイムの更新により、インデックスがファイルシステムの変更と同期されます。

import com.groupdocs.search.scaling.*;

class SearchNetworkNodeEvents {
    public static void subscribe(SearchNetworkNode node) {
        // Logic to subscribe to the specified node's events
    }
}

イベントをリッスンすることで、新しいファイルが到着した際に自動的に再インデックスをトリガーでき、event driven indexing を手動スクリプトなしで実現します。

機能 4 – ネットワークノードへのディレクトリ追加

このヘルパーを使用して add directories to node を実行し、サポートされているすべての文書を再帰的に収集します。

import java.io.File;
import java.util.ArrayList;

class DirectoryAdder {
    public static void addDirectories(SearchNetworkNode node, String... directoryPaths) {
        ArrayList<String> files = new ArrayList<>();
        for (String directoryPath : directoryPaths) {
            final File folder = new File(directoryPath);
            listFiles(folder, files);
        }
        addFiles(node, files.toArray(new String[0]));
    }

    private static void listFiles(final File folder, ArrayList<String> list) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFiles(fileEntry, list);
            } else {
                list.add(fileEntry.getPath());
            }
        }
    }
}

機能 5 – ネットワークノードへのファイル追加

細かい制御が必要な場合は、add files to search を個別に実行します:

import com.groupdocs.search.Document;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import org.apache.commons.io.FilenameUtils;
import com.groupdocs.search.Indexer;
import com.groupdocs.search.options.*;

class FileAdder {
    public static void addFiles(SearchNetworkNode node, String... filePaths) {
        try {
            InputStream[] streams = new FileInputStream[filePaths.length];
            Document[] documents = new Document[filePaths.length];
            for (int i = 0; i < filePaths.length; i++) {
                String filePath = filePaths[i];
                InputStream stream = new FileInputStream(filePath);
                streams[i] = stream;
                
                // Create a document from the input stream
                String fileName = FilenameUtils.getName(filePath);
                String extension = "." + FilenameUtils.getExtension(filePath);
                Document document = Document.createFromStream(
                    fileName,
                    new Date(),
                    extension,
                    stream);
                documents[i] = document;
            }

            // Initialize the indexer and configure options
            Indexer indexer = node.getIndexer();
            IndexingOptions options = new IndexingOptions();
            options.setUseRawTextExtraction(false);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

一般的なユースケース

  • Enterprise document portals は数千の PDF や Office ファイルに対して即時検索が必要です。
  • Legal e‑discovery platforms は新しい証拠が継続的に追加され、リアルタイムで検索可能である必要があります。
  • Content management systems は画像、プレゼンテーション、スプレッドシートを保存し、フルテキスト検索が必要です。

一般的な問題と解決策

問題原因対策
検索結果に文書が表示されませんインデックスがコミットされていないnode.getIndexer().commit() をファイル追加後に呼び出します。
ポート競合エラー別のサービスが basePort を使用しています別の basePort を選択するか、空きポートを確認してください。
サポートされていないファイル形式ライブラリにパーサがありませんファイル拡張子がサポートされていることを確認するか、カスタムエクストラクタを追加してください。

トラブルシューティングのヒント

  • Verify node health: ビルトインのヘルスチェックエンドポイント (http://localhost:{port}/health) を使用して各ノードが稼働していることを確認します。
  • Monitor memory usage: 大量の文書バッチはメモリ使用量を急増させる可能性があります。小さなチャンクでインデックスし、定期的に commit() を呼び出してください。
  • Check logs: GroupDocs.Search は詳細なログを basePath フォルダーに書き込みます—パースエラーやネットワークタイムアウトについて確認してください。

よくある質問

Q: クラウドベースの Java アプリケーションで GroupDocs.Search を使用できますか?
A: はい。ライブラリはあらゆる Java ランタイムで動作し、basePath をネットワークマウントフォルダーまたはクラウドストレージマウントに設定できます。

Q: ファイルが変更されたときにインデックスを更新するには?
A: ノードイベントを購読し(Feature 3 を参照)、変更されたパスに対して addFiles または addDirectories を再度呼び出します。

Q: デプロイできるノード数に制限はありますか?
A: 実質的にはハードウェアとネットワーク帯域幅が上限です。API にはハードな上限はありません。

Q: 新しいファイルを追加した後にノードを再起動する必要がありますか?
A: いいえ。ファイル追加は自動的にインデックスをトリガーします。操作を遅延させた場合のみコミットが必要です。

Q: 標準でサポートされているドキュメント形式は何ですか?
A: PDF、DOC/DOCX、XLS/XLSX、PPT/PPTX、TXT、HTML、そして多数の画像タイプ—合計で 50 以上の形式をサポートしています。

Q: 継続的にアップロードが行われるフォルダーに対してリアルタイムインデックス java を有効にするには?
A: ファイルシステムウォッチャー(例: java.nio.file.WatchService)を実装し、新しいファイルが検出されるたびに DirectoryAdder.addDirectories(node, path) を呼び出します。

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

関連チュートリアル