对结构化数据存储区中的结果进行排序

本页介绍了如何对对结构化数据存储区和包含元数据的非结构化数据存储区执行的搜索查询的结果进行排序。

用于对结果进行排序的支持的数据类型

您可以按以下字段类型对搜索结果进行排序:

  • 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 会返回从最旧到最新的结果。如需获取降序排序,请将 desc 附加到 date 值,例如 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 的距离从近到远对文档进行排序。

  • "orderBy": "GEO_DISTANCE(location, 37.38, -122.08) desc" 会按距离 37.38°N、122.08°W 的位置从最远到最近的顺序对文档进行排序。