You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Cognitive Search分页时获取唯一ID的结果?

解决Azure Cognitive Search分页返回唯一ID条目并取最高分结果的方法

要实现每个ID仅返回得分最高的条目,且分页结果无重复ID,可以利用Azure Cognitive Search的**结果分组(Grouping)**功能,配合分页参数完成需求,具体步骤如下:

关键配置与请求示例

1. 确保索引字段可分组

首先确认你的索引中id字段的filterable属性已设为true(groupBy要求字段必须支持过滤)。若未配置,需更新索引定义:

{
  "fields": [
    {
      "name": "id",
      "type": "Edm.String",
      "filterable": true,
      // 其他属性保持不变
    },
    {
      "name": "value",
      "type": "Edm.String",
      // 其他属性保持不变
    }
  ]
}

2. 构造搜索请求

使用REST API发起搜索请求,核心参数包括groupBy、groupTop、orderby、top和skip:

POST /indexes/your-index-name/docs/search?api-version=2023-11-01
Content-Type: application/json

{
  "search": "*", // 替换为你的搜索关键词,*表示全量搜索
  "groupBy": "id", // 按id字段分组
  "groupTop": 1, // 每个组仅返回1条得分最高的结果
  "select": "id, value", // 指定返回的字段
  "orderby": "search.score() desc", // 按搜索得分降序排序,确保每个组取最高分条目
  "top": 50, // 每页返回的唯一ID数量
  "skip": 0 // 分页偏移量,第一页为0,第二页为50,以此类推
}

参数说明

  • groupBy: 按id分组,确保同一ID的所有条目归为一组,避免重复ID出现在结果中。
  • groupTop: 设置为1,仅保留每个组内得分最高的条目。
  • orderby: 基于search.score()排序,保证每个组的首条结果是该ID下与搜索请求最匹配的条目。
  • top/skip: 实现分页,top定义每页的唯一ID数量,skip控制分页的起始位置。

结果格式

返回的结果会符合你期望的格式,示例如下:

{
  "value": [
    { "@search.score": 1.0, "id": "1", "value": "some value" },
    { "@search.score": 0.8, "id": "2", "value": "some value" },
    // 更多唯一ID的条目
  ]
}

若不需要@search.score字段,可从select参数中移除。

内容的提问来源于stack exchange,提问作者ocean-man-24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:34:56