メディアアプリの検索結果を取得する

このページでは、Google Cloud コンソールを使用してメディアアプリの検索結果をプレビューする方法と、API を使用して検索結果を取得する方法について説明します。

検索アプリを実装するには、ウェブページに追加する検索ウィジェットを作成するか、API 呼び出しを行って、それらの呼び出しをウェブページやアプリケーションに統合します。

検索モードについて

メディアアプリの検索クエリには、いくつかのモードがあります。

  • 完全一致のクエリ: エンドユーザーが検索語句全体を検索対象にしたい場合。たとえば、音楽ストリーミング アプリで、ユーザーが曲のタイトル全体を入力して、一度に検索します。これは、音声入力やキーボード入力など、ユーザーが一度に検索できる入力インターフェースを使用する場合に推奨される検索方法です。

    完全なクエリでは、エントリにスペルミスが含まれている場合、ユーザーはそのミスが修正されることを期待します。

    これは、メディア以外の(カスタム)アプリの検索と同じ動作です。構造化データまたは非構造化データを含むアプリの検索結果を取得するをご覧ください。

  • 部分一致(または入力中の検索)クエリ: エンドユーザーが文字を入力するたびに、新しい検索結果のセットを動的に受け取る場合。たとえば、音楽ストリーミング アプリでは、ユーザーが検索する曲の名前を入力し始めると、入力するたびに検索結果が動的に更新され、絞り込まれます。

  • 自動モード: 自動モードは、フルモードと部分モードを組み合わせたものです。自動モードでは、クエリ結果を部分的に返すか完全に返すかをメディア検索で決定します。

    メディア検索では、エンドユーザーの意図を推定するために、入力された文字数、入力速度、入力が認識されたエンティティ(俳優や映画の名前など)であるかどうかなど、さまざまなシグナルを分析して重み付けします。

使用するモード

メディア検索クエリのデフォルト モードは自動モードです。ただし、デフォルト モードをオーバーライドして、完全クエリ モードまたは部分クエリ モードを指定する場合もあります。ユースケースの例を次に示します。

シナリオ モード
エンドユーザーのクエリが完全なクエリであると確信している。たとえば、クエリの完了をマークする Enter 関数を含む検索ボックスがあり、ユーザーが Enter キーを押します。 完全なクエリ
エンドユーザーのクエリが部分クエリとして意図されている(つまり、入力された文字ごとに結果リストが更新されることを期待している)と確信している。 部分的なクエリ
上記のいずれのシナリオにも該当しない。メディア検索で、クエリ結果を部分的に返すか完全に返すかを決定できるようにします。 自動

検索結果は、 Google Cloud コンソールでプレビューするか、API を使用して取得できます。メディアアプリの検索結果を取得するには:

コンソール

Google Cloud コンソールを使用してメディア検索をプレビューし、ウィジェットを構成するには:

  1. Google Cloud コンソールで、[AI アプリケーション] ページに移動します。

    AI アプリケーション

  2. メディア検索アプリの名前をクリックします。

  3. [設定] をクリックします。

  4. [UI] タブをクリックします。

  5. [UI] タブで、[全般設定] オプションと [データ表示] オプションを設定します。

  6. [プレビュー] ペインで、クエリの入力を開始します。

  7. 構成を保存して [統合] タブで使用できるようにするには、[保存して公開] をクリックします。

REST

engines.servingConfigs.search メソッドを使用して、メディアアプリの検索結果を取得します。

  1. アプリ ID を確認します。アプリ ID がすでにある場合は、次のステップに進みます。

    1. Google Cloud コンソールで、[AI アプリケーション] ページに移動します。

      [アプリ] に移動

    2. [アプリ] ページで、アプリの名前を見つけ、[ID] 列からアプリの ID を取得します。

  2. 次の curl コマンドを実行して、入力逐次検索の結果を取得します。

    contentSearchSpec を除くすべてのフィールドは、searchAsYouTypeSpec フィールドと組み合わせて使用できます。わかりやすくするため、省略可能なフィールドは curl コマンドから省略されています。省略可能なフィールドについては、構造化データまたは非構造化データを含むアプリの検索結果を取得するをご覧ください。

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
    -d '{
    "query": "QUERY",
    "searchAsYouTypeSpec": {"condition": "SPEC_CONDITION"}
    }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • APP_ID: クエリする Vertex AI Search アプリの ID。
    • QUERY: 検索するクエリテキスト。
    • SPEC_CONDITION: 入力時の検索の仕様は、次のいずれかの値になります。

      • ENABLED: 部分クエリの場合
      • DISABLED: 完全なクエリの場合
      • AUTO: 適切と判断された場合は、一部または全額。SPEC_CONDITION フィールドを空のままにするか、指定しない場合、デフォルトの検索モードは AUTO です。

    コマンドの例と部分的な結果

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:search" \
    -d '{
    "query": "Mission Impossible",
    "searchAsYouTypeSpec": {"condition": "DISABLED"}
    }'
    
    { "results": [ { "id": "189333", "document": { "name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/189333", "id": "189333", "structData": { "uri": "http://mytestdomain.movie/content/189333", "title": "Mission: Impossible - Fallout (2018)", "categories": [ "Action", "Adventure", "Thriller" ], "available_time": "2023-01-01T00:00:00Z", "media_type": "movie", "expire_time": "2033-01-01T00:00:00Z" } } }, { "id": "111781", "document": { "name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/111781", "id": "111781", "structData": { "media_type": "movie", "available_time": "2023-01-01T00:00:00Z", "uri": "http://mytestdomain.movie/content/111781", "title": "Mission: Impossible - Rogue Nation (2015)", "categories": [ "Action", "Adventure", "Thriller" ], "expire_time": "2033-01-01T00:00:00Z" } } }, ... { "id": "116507", "document": { "name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/116507", "id": "116507", "structData": { "uri": "http://mytestdomain.movie/content/116507", "categories": [ "Comedy" ], "media_type": "movie", "available_time": "2023-01-01T00:00:00Z", "title": "Mission London (2010)", "expire_time": "2033-01-01T00:00:00Z" } } } ], "totalSize": 5628, "attributionToken": "vgL0PQEKDAiZxMbCBhD2koiqAxIkNjg1MWM3OTUtMDAwMC0yOWVmLThhNzUtZDQzYTJjYzdiYmNmIgVNRURJQSpUtreMLa_WoTGs1qExwvCeFaOAlyKrtZwxxcvzF-7r6TGotZwxkPeyMI6RyTDPv-Iw1L_iMJvWty2Ovp0V1LKdFfHr6THs4K8tkvGsMJXxrDCY1rctMAFKEjB4OTYzYjdjNGE0ZGYwN2FhZlKUAXByb2plY3RzLzc1NjIwNjYwODQ3OS9sb2NhdGlvbnMvZ2xvYmFsL2NvbGxlY3Rpb25zL2RlZmF1bHRfY29sbGVjdGlvbi9lbmdpbmVzL3F1aWNrc3RhcnQtbWVkaWEtcmVjb21tZW5kXzE3NDUwMjUyMjYwNDMvc2VydmluZ0NvbmZpZ3MvZGVmYXVsdF9zZWFyY2g", "nextPageToken": "Y2YiJ2NjNmMhNDNk1SN3EGOtYWZ5ITLwADMw0CN5czYxUDO2QiGDI9kgzIEGIs1tmJCMIBM1IgC", "summary": {}, "queryExpansionInfo": {} }

次のステップ