すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:検索候補のデモ

最終更新日:Jul 25, 2025

環境変数の設定

環境変数 ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET を設定します。

重要
  • Alibaba Cloud アカウントの AccessKey ペアを使用すると、すべての API 操作にアクセスできます。 API 操作の呼び出しや日常の O&M の実行には、Resource Access Management (RAM) ユーザーを使用することをお勧めします。 RAM ユーザーの使用方法については、「RAM ユーザーの作成」をご参照ください。

  • AccessKey ペアの作成方法については、「AccessKey ペアの作成」をご参照ください。

  • RAM ユーザーの AccessKey ペアを使用する場合は、Alibaba Cloud アカウントを使用して、必要な権限が AliyunServiceRoleForOpenSearch ロールに付与されていることを確認してください。 詳細については、「AliyunServiceRoleForOpenSearch」および「アクセス認証ルール」をご参照ください。

  • プロジェクトコードなど、他の人が簡単にアクセスできる資料に AccessKey ペアを含めないことをお勧めします。 そうしないと、AccessKey ペアが漏洩し、アカウント内のリソースが安全でなくなる可能性があります。

  • Linux および macOS

    次のコマンドを実行します。 <access_key_id> および <access_key_secret> を、使用する RAM ユーザーの AccessKey ID と AccessKey シークレットに置き換えます。

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> 
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Windows

    1. 環境変数ファイルを作成して、ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を追加し、それらをお使いの AccessKey ID と AccessKey シークレットにセットします。

    2. AccessKey ペアを有効にするには、Windows を再起動します。

ドロップダウンリスト検索のサンプル

この例では、次のパラメータを独自のパラメータに置き換えます。

  • host: インスタンスのパブリック API エンドポイントに置き換えます。 インスタンスリスト に移動 > インスタンスの [詳細] をクリック > [エンドポイント] > [パブリック API エンドポイント] を取得します。

  • [suggestionName]: ドロップダウンモデル名に置き換えます。 [検索アルゴリズムセンター] > [検索ガイダンス] > ドロップダウン検索候補 に移動して取得します。

  • appName: インスタンス名に置き換えます。 インスタンスリスト に移動して表示します。

  • query: 検索キーワードに置き換えます。

説明
  • SDK バージョン 4.0.0 以上を使用する場合、SuggestionClient オブジェクトの作成時に AppName を渡します。

  • この API 操作の詳細については、「検索候補」をご参照ください。

  • Java SDK については、ダウンロードハブをご覧ください。

SDK バージョン 4.0.0 以上

package com.example.opensearch;

import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.SuggestionClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.nio.charset.Charset;

public class SuggestDemo {
    static private final String host = "検索候補の関連アプリケーションが配置されているリージョンのホストを入力します"; // 検索候補の関連アプリケーションが配置されているリージョンのホストを入力します
    OpenSearch openSearch;
    OpenSearchClient openSearchClient;
    static private final byte hits = 8; // 返す検索候補の最大数
    static private final String suggestionName = "検索候補モデル名を入力します"; // 検索候補モデル名を入力します
    static private final String appName = "インスタンス名";
    
    @Before
    public void setUp() {
      	// AccessKey ペア。
        // 環境変数から AccessKey ID と AccessKey シークレットを取得します。このコードを実行する前に、環境変数を設定する必要があります。
        String accesskey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String secret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // openSearch オブジェクトを初期化します
        openSearch = new OpenSearch(accesskey, secret, host);
        openSearchClient = new OpenSearchClient(openSearch);
    }

    @Test
    public void TestEnv() {
        // ファイルのエンコード形式とデフォルトのエンコード形式を取得します。
        System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
        System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));

        // 検索候補オブジェクトを作成します
        SuggestionClient suggestionClient = new SuggestionClient(appName,suggestionName,openSearchClient);
        String query = "検索クエリを入力します"; // 検索クエリを入力します
try {
            SuggestParams suggestParams = new SuggestParams();
            suggestParams.setQuery(query); // 検索クエリを設定します
            suggestParams.setHits(hits); // 返す検索候補の最大数を設定します
            suggestParams.setUserId("12345678"); // user_id を設定します
            // 「中国語同音異義語」補完取得機能はデフォルトで有効になっています。リクエストに re_search パラメータを追加して調整できます
            // ReSearch.findByValue(1) は無効を示します。 ReSearch.findByValue(0) またはこのパラメータを渡さない場合は、有効を示します
            suggestParams.setReSearch(ReSearch.findByValue(1));
            SearchResult result = suggestionClient.execute(suggestParams); 
            System.out.println(result); // 取得結果を出力します
        } catch (OpenSearchException e) {
            e.printStackTrace();
        } catch (OpenSearchClientException e) {
            e.printStackTrace();
        }
    }

    @After
    public void clean() {
        openSearch.clear();
    }
}

SDK バージョン 4.0.0 未満

package com.example.opensearch;

import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.SuggestionClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.nio.charset.Charset;

public class SuggestDemo {
    static private final String host = "検索候補の関連アプリケーションが配置されているリージョンのホストを入力します"; // 検索候補の関連アプリケーションが配置されているリージョンのホストを入力します
    OpenSearch openSearch;
    OpenSearchClient openSearchClient;
    static private final byte hits = 8; // 返す検索候補の最大数
    static private final String suggestionName = "検索候補モデル名を入力します"; // 検索候補モデル名を入力します

    @Before
    public void setUp() {
      	// AccessKey ペア。
        // 環境変数から AccessKey ID と AccessKey シークレットを取得します。このコードを実行する前に、環境変数を設定する必要があります。
        String accesskey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String secret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // openSearch オブジェクトを初期化します
        openSearch = new OpenSearch(accesskey, secret, host);
        openSearchClient = new OpenSearchClient(openSearch);
    }

    @Test
    public void TestEnv() {
        // ドキュメントとデフォルトのエンコード形式を表示します。
        System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
        System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));

        // 検索候補オブジェクトを作成します
        SuggestionClient suggestionClient = new SuggestionClient(suggestionName, openSearchClient);
        String query = "検索クエリを入力します"; // 検索クエリを入力します
try {
            SuggestParams suggestParams = new SuggestParams();
            suggestParams.setQuery(query); // 検索クエリを設定します
            suggestParams.setHits(hits); // 返す検索候補の最大数を設定します
            suggestParams.setUserId("12345678"); // user_id を設定します
            // 「中国語同音異義語」補完取得機能はデフォルトで有効になっています。リクエストに re_search パラメータを追加して調整できます
            // ReSearch.findByValue(1) は無効を示します。 ReSearch.findByValue(0) またはこのパラメータを渡さない場合は、有効を示します
            suggestParams.setReSearch(ReSearch.findByValue(1));
            SearchResult result = suggestionClient.execute(suggestParams); 
            System.out.println(result); // 取得結果を出力します
        } catch (OpenSearchException e) {
            e.printStackTrace();
        } catch (OpenSearchClientException e) {
            e.printStackTrace();
        }
    }

    @After
    public void clean() {
        openSearch.clear();
    }
}