GroupDocs.Search Javaでネットワークを構成する方法

はじめに

今日のデジタル環境において、ネットワークの構成方法(how to configure盤を提供します。このチのには画像検索の実行まで、堅牢な検索ネットワークを構築するために必要なすべてを順に解説します。

クイック回答

  • 検索ネットワークの主な目的は何ですか? インデックス作成とクエリ負荷を複数のノードに分散させ、スケーラビリティと信頼性を向上させることです。
  • GroupDocs.Search がデフォルトで使用するポートはどれですか? 例ではポート 49120 を使用していますが、任意の空きポートを選択できます。
  • ダウンタイムなしでノードを追加または削除できますか? はい。ノードは動的にデプロイまたは退役できます。
  • 本番環境でライセンスが必要ですか? 本番利用にはフルライセンスが必要です。評価用にトライアルライセンスも利用可能です。
  • 画像検索は標準でサポートされていますか? はい。GroupDocs.Search は組み込みの画像ハッシュ比較を提供します。

検索ネットワークとは?

検索ネットワークは、相互に接続された SearchNetworkNode インスタンスの集合で、インデックス情報を共有し、協調してクエリに応答します。このアーキテクチャにより、膨大な文書コレクションを扱いながら応答時間を低く保つことができます。

なぜ GroupDocs.Search for Java を使用するのか?

  • スケーラビリティ: リポジトリが拡大するにつれてノードを追加できます。
  • パフォーマンス: 並列インデックス作成とクエリ処理によりレイテンシが低減します。
  • 柔軟性: テキスト、PDF、Office ファイル、画像検索をサポートします。
  • イベント駆動型管理: イベント購読によるリアルタイム監視が可能です。

前提条件

  • JDK 8+ がインストールされていること。
  • IntelliJ IDEAEclipse などの IDE。
  • 依存関係管理のための Maven。
  • Java とネットワーク概念の基本的な知識。

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

pom.xml に 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>

あるいは、最新バージョンを GroupDocs.Search for Java releases からダウンロードしてください。

GroupDocs.Search for Java の設定

Maven によるインストール

上記の Maven スニペットは、ライブラリをプロジェクトに自動的に取り込みます。

ライセンス取得

  • Free Trial – コア機能を体験できます。
  • Temporary License – テスト期間を延長できます。
  • Full License – 本番環境向けで、使用制限がありません。

基本的な初期化と設定

import com.groupdocs.search.*;

public class SearchSetup {
    public static void main(String[] args) {
        // Create an instance of Index with the path to store index data.
        String indexPath = "path/to/index";
        Index index = new Index(indexPath);
        
        System.out.println("GroupDocs.Search initialized successfully.");
    }
}

実装ガイド

ここからは、各コアタスクを明確なステップバイステップのコードスニペットとともに解説します。

検索ネットワークでノードをデプロイする方法

複数のノードをデプロイすることで、負荷が分散され、フォールトトレランスが向上します。

public class SearchNetworkDeployment {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Change if necessary.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);

        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
        
        System.out.println("Deployed " + nodes.length + " search network nodes.");
    }
}

説明:

  • basePath は文書が格納されたフォルダーを指します。
  • basePort は各ノードがリッスンする 検索ネットワークポート です。競合を避けるよう調整してください。
  • このメソッドは、アクティブな各ノードを表す SearchNetworkNode オブジェクトの配列を返します。

イベントを購読する方法

イベント購読により、ノードの状態、インデックス作成の進捗、エラーをリアルタイムで把握できます。

public class NodeEventSubscription {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Adjust if needed.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

        SearchNetworkEvents.subscribe(nodes[0]);
        
        System.out.println("Subscribed to events for the master node.");
    }
}

説明:

  • nodes[0]マスターノード として扱われます。各ワーカーノードを個別に購読することも可能です。

文書をインデックスする方法

効率的なインデックス作成は、迅速な検索結果の基盤です。

public class DocumentIndexing {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Change if there is a conflict.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

        IndexingDocuments.addDirectories(nodes[0], "YOUR_DOCUMENT_DIRECTORY");
        
        System.out.println("Added directories to master node's index.");
    }
}

説明:

  • addDirectories は、マスターノードにスキャンおよびインデックス対象のフォルダーを指示します。
  • インデックスが作成されると、すべてのノードが共有インデックスに対してクエリを実行できます。

画像検索を実行する方法

GroupDocs.Search は画像ハッシュ比較をサポートしており、視覚的に類似した資産を見つけることができます。

public class ImageSearch {
    public static void run() {
        String basePath = "YOUR_DOCUMENT_DIRECTORY";
        int basePort = 49120; // Modify if needed.
        Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
        SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);

        SearchImage searchImage = SearchImage.create("YOUR_DOCUMENT_DIRECTORY/ic_arrow_back_black_18dp.png");

        imageSearch(nodes[0], searchImage, 8);
    }
}

説明:

  • SearchImage.create は参照画像をロードします。
  • imageSearch は選択したノードでクエリを実行し、最大ハッシュ差 8 を許容します(より厳密または緩やかなマッチに調整可能)。

ネットワークポートを構成する方法

環境で既にポート 49120 を使用している場合は、任意の空き TCP ポートに変更できます:

int customPort = 50000; // Example of a custom port.
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, customPort);

選択したポートがファイアウォールで開放され、他のサービスで使用されていないことを確認してください。

よくある問題とトラブルシューティング

症状考えられる原因対策
ノードが起動しないポート競合別の basePort を選択し、ファイアウォールのルールを更新してください。
インデックス作成が遅いI/O 帯域幅が不足SSD ストレージを使用し、インクリメンタルインデックスを有効にしてください。
イベント購読が発火しないイベントハンドラの登録が欠如SearchNetworkEvents.subscribe(node) がインデックス作成前に呼び出されていることを確認してください。
画像検索で結果が返らないハッシュ差が小さすぎる許容ハッシュ差を増やしてください(例: 4 から 8 へ)。

よくある質問

Q: GroupDocs.Search ネットワークでインデックス作成のパフォーマンスを最適化するにはどうすればよいですか?
A: インクリメンタルインデックスを使用し、インデックスを高速 SSD に保存し、JVM のヒープメモリを十分に割り当てます。

Q: 検索ネットワーク全体を再起動せずにノードを追加または削除できますか?
A: はい。ノードは動的にデプロイまたは退役できます。ノードを追加した後、SearchNetworkDeployment.deploy を再度呼び出してクラスタビューを更新してください。

Q: イベント購読はネットワーク管理をどのように改善しますか?
A: 購読したイベントは、ノードの状態変化、インデックス作成の進捗、エラーに関するリアルタイムアラートを提供し、能動的なトラブルシューティングを可能にします。

Q: 異なる文書形式を同時に検索することは可能ですか?
A: もちろんです。GroupDocs.Search は PDF、Word、Excel、PowerPoint、画像など多数の形式を単一クエリで検索できます。

Q: GroupDocs.Search ネットワーク内のデータはどの程度安全ですか?
A: セキュリティはインフラに依存します。ノード間通信に SSL/TLS を導入し、ネットワークアクセスを制限し、データ保護のベストプラクティスに従ってください。


Last Updated: 2026-01-19
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs