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

如何通过.NET SDK获取Azure Search的@search.score默认搜索评分

获取Azure Search文档的@search.score值(.NET SDK)

别担心,用.NET SDK获取这个搜索评分其实非常直接,不管你用的是最新的Azure SDK包还是旧版的,都有现成的方式拿到这个值,不需要额外配置。

针对新版Azure.Search.Documents包(v11+,推荐使用)

现在Azure官方主推的是Azure.Search.Documents NuGet包,当你执行搜索请求后,返回的结果会封装在SearchResult<T>对象里,其中的Score属性就是你要找的@search.score值——完全不需要在你的文档模型里额外定义这个字段,SDK已经帮你处理好了元数据的提取。

举个实际的代码示例:

// 先定义你的文档实体模型
public class ProductDocument
{
    public string Id { get; set; }
    public string ProductName { get; set; }
    public string Description { get; set; }
    // 其他业务字段...
}

// 初始化SearchClient(记得替换成你的服务信息)
var searchClient = new SearchClient(
    new Uri("https://your-search-service.search.windows.net"),
    "your-index-name",
    new AzureKeyCredential("your-api-key")
);

// 执行搜索请求
var searchOptions = new SearchOptions();
// 可以根据需求添加筛选、排序、选择字段等配置
var searchResponse = await searchClient.SearchAsync<ProductDocument>("你的搜索关键词", searchOptions);

// 遍历结果并获取评分
await foreach (var result in searchResponse.Value.GetResultsAsync())
{
    Console.WriteLine($"产品ID: {result.Document.Id}, 搜索评分: {result.Score}");
    // 这里的result.Score就是Portal里看到的@search.score值
}

针对旧版Microsoft.Azure.Search包(v10及以下)

如果你还在使用旧版的Microsoft.Azure.Search包,逻辑其实差不多,只是返回的结果类型是DocumentSearchResult<T>,里面的Results集合同样包含SearchResult<T>对象,Score属性对应@search.score:

// 初始化旧版的SearchIndexClient
var searchIndexClient = new SearchIndexClient(
    new Uri("https://your-search-service.search.windows.net"),
    new SearchCredentials("your-api-key")
);

var searchParams = new SearchParameters();
var searchResponse = await searchIndexClient.Documents.SearchAsync<ProductDocument>("你的搜索关键词", searchParams);

// 遍历结果
foreach (var result in searchResponse.Results)
{
    Console.WriteLine($"产品ID: {result.Document.Id}, 搜索评分: {result.Score}");
}

额外小技巧:把评分和文档绑定返回

如果需要把评分作为文档的一部分返回给前端或者其他业务模块,可以创建一个简单的DTO来封装:

public class DocumentWithScore<T>
{
    public T Document { get; set; }
    public double SearchScore { get; set; }
}

// 转换搜索结果
var documentsWithScores = await searchResponse.Value.GetResultsAsync()
    .Select(result => new DocumentWithScore<ProductDocument>
    {
        Document = result.Document,
        SearchScore = result.Score
    })
    .ToListAsync();

默认评分配置下,这个Score值就是Azure Search使用的默认BM25(或旧版TF-IDF)算法计算出的评分,不需要额外启用任何配置,只要执行搜索就能自动拿到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:14:44