構造化データストアから結果を並べ替える

このページでは、構造化データストアとメタデータを含む非構造化データストアに対して実行された検索クエリの結果を並べ替える方法について説明します。

結果の並べ替えでサポートされているデータ型

検索結果の並べ替えに使用できるフィールド タイプは次のとおりです。

  • string
  • number
  • datetime
  • geolocation

始める前に

構造化データまたはメタデータを含む非構造化データを含むデータストアを持つアプリがあることを確認します。

検索結果を並べ替える

構造化データストアまたはメタデータを含む非構造化データストアの検索結果を並べ替える手順は次のとおりです。

REST

API を使用して、構造化データまたはメタデータを含む非構造化データを含むアプリの検索結果を並べ替えるには、engines.servingConfigs.search メソッドを使用します。

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

    1. Google Cloud コンソールで、[Agent Builder] ページに移動します。

      [アプリ] に移動

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

  2. 検索クエリを作成し、orderBy フィールドを含めます。

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

    以下を置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID。
    • APP_ID: Vertex AI Search アプリの ID。
    • QUERY: 検索するクエリテキスト。
    • ORDER_BY: 結果の並べ替え順序。デフォルトの並べ替え順は昇順です。たとえば、date を指定すると、最も古いものから最も新しいものの順に結果が返されます。降順で並べ替えるには、date 値に desc を追加します(例: date desc)。その他の例については、orderBy の例をご覧ください。
    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1alpha/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:search" \
    -d '{
        "query": "hotel",
        "orderBy": "rating desc"
       }'
        
    { "results": [ { "id": "10d480b19c256bb1", "document": { "name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/10d480b19c256bb1", "id": "10d480b19c256bb1", "structData": { "available_date": "2023-11-05", "amenities": [ "Lake Views", "Private Beach", "Spa", "Water Activities" ], "room_types": [ "Lakefront Suite", "Deluxe Room", "Cottage" ], "location": { "address": "988 Serenity Circle, Tranquil Town, NV 89501, USA" }, "rating": 4.6, "id": 11, "price_per_night": 220.5, "title": "Serenity Springs Hotel" } } }, { "id": "9ffae8af37cc8b63", "document": { "name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/9ffae8af37cc8b63", "id": "9ffae8af37cc8b63", "structData": { "title": "Riverfront Plaza Hotel", "rating": 4.2, "location": { "address": "101 Main St, Anytown, CA 94501, USA" }, "price_per_night": 145.8, "amenities": [ "Fitness Center", "Conference Rooms", "Restaurant", "Valet Parking" ], "id": 3, "room_types": [ "Executive Suite", "King Room", "Double Queen" ], "available_date": "2023-11-15" } } }, { "id": "3be9e854d8f3a47f", "document": { "name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3be9e854d8f3a47f", "id": "3be9e854d8f3a47f", "structData": { "amenities": [ "Oceanfront Views", "Pool", "Spa", "Beachside Dining" ], "available_date": "2023-09-18", "location": { "address": "449 Oceanfront Drive, Seaside Resort, CA 92007, USA" }, "id": 13, "title": "Ocean Breeze Hotel", "room_types": [ "Ocean View Suite", "Deluxe Room", "Family Suite" ], "rating": 4.1, "price_per_night": 180 } } } ], "totalSize": 3, "attributionToken": "wAHwvwoMCNDYz7UGEMCklrsCEiQ2NmIzYmU5My0wMDAwLTIxMDUtYmUyNy01ODI0MjljMzdlZTQiB0dFTkVSSUMqgAHd1akt3e2ILebtiC2CspoigLKaIpjeqC-q-LMtjr6dFeqCsS2W3qgvwvCeFaz4sy2jgJcinta3LeiCsS3b7Ygt5O2ILa3Eii3Usp0Vpp-VLZzWty359rMt-_azLaCJsy3dj5oixcvzF6vEii2iibMttreMLd_VqS3bj5oipJ-VLQ", "guidedSearchResult": {}, "summary": {} }

    この例では、「hotel」という単語を含むドキュメントが、評価 4.6 の Serenity Springs Hotel から評価 4.1 の Ocean Breeze Hotel まで、評価順に並べられています。

orderBy の例

title という文字列フィールドで並べ替えるには:

  • "orderBy": "title" は、タイトルに従って昇順のアルファベット順でドキュメントを返します。

  • "orderBy": "title desc" は、タイトルに従って逆アルファベット順(Z から A)に並べ替えられたドキュメントを返します。

rating という数値フィールドで並べ替えるには:

  • "orderBy": "rating" は、評価の最も低いものから最も高いものの順にドキュメントを並べ替えます。

  • "orderBy": "rating desc"は、評価の最も高いものから最も低いものの順にドキュメントを並べ替えます。

available_date という日時フィールドで並べ替えるには:

  • "orderBy": "available_date" は、最も早く入手できるドキュメントから最も遅く入手できるドキュメントの順に並べ替えます。

  • "orderBy": "available_date desc"は、入手可能な日付が最も遅いドキュメントから最も早いドキュメントの順に並べ替えます。

location というフィールドの位置情報に基づいて並べ替えるには:

  • "orderBy": "GEO_DISTANCE(location, \"Mountain View, CA\")" は、Mountain View に最も近くにあるドキュメントから Mountain View から最も遠くにあるドキュメントの順に並べ替えます。

  • "orderBy": "GEO_DISTANCE(location, 37.38, -122.08) desc" は、37.38°N、122.08°W の場所から最も遠い順にから近い順にドキュメントを並べ替えます。