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

如何在Azure搜索初始查询中过滤低于指定最小search.score()的结果

Azure 认知搜索得分阈值过滤解决方案

直接在查询阶段过滤低分结果的实现方案

你可以直接在搜索请求的筛选逻辑中使用search.score()函数完成阈值过滤,无需修改索引结构、也不需要调整已导入的索引数据,该方案可以同时解决你提到的两个问题。

使用Azure.Search.Documents v11.3.0 .NET SDK的实现代码如下:

using Azure;
using Azure.Search.Documents;
using Azure.Search.Documents.Models;

// 搜索客户端初始化
SearchClient searchClient = new SearchClient(
    new Uri("https://<你的搜索服务名>.search.windows.net/"),
    "<你的索引名称>",
    new AzureKeyCredential("<你的查询API密钥>")
);

SearchOptions searchOptions = new SearchOptions
{
    // 核心逻辑:过滤所有得分≥9的文档
    Filter = "search.score() ge 9",
    // 可自由配置排序规则,按字母排序、按得分排序均不受影响
    OrderBy = { "productName asc" },
    // 开启总数统计,直接返回符合条件的文档总数量
    IncludeTotalCount = true,
    // 分页参数按你的业务需求配置即可
    Size = 20,
    Skip = 0
};

// 执行搜索请求
Response<SearchResults<Product>> response = await searchClient.SearchAsync<Product>("<你的搜索关键词>", searchOptions);
SearchResults<Product> searchResults = response.Value;

// 直接获取符合得分要求的总文档数,无需遍历所有分页
long? qualifiedTotalCount = searchResults.TotalCount;
// 遍历当前页结果
foreach (SearchResult<Product> result in searchResults.GetResults())
{
    Product product = result.Document;
    double score = result.Score ?? 0;
    // 业务逻辑处理
}

方案优势

  • 自动排除所有得分低于9的文档,所有后续排序、分页操作都在符合阈值要求的结果集内执行,按字母排序时不需要额外处理逻辑
  • 开启IncludeTotalCount参数后返回的TotalCount就是符合阈值要求的文档总数,不需要遍历全部分页统计
  • 不需要对现有索引结构、已导入的索引数据做任何修改,开箱即可用

注意事项

  • search.score()返回的是应用完所有搜索评分规则(包括自定义评分配置)后的最终得分,过滤逻辑完全符合业务预期
  • 得分取值范围为0~100,9的阈值设置合法,无需做额外数值转换

内容的提问来源于stack exchange,提问作者Matty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:06:02