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

Azure Cognitive Search添加关键短语提取技能集后字段无数据的问题求助

解决Azure Cognitive Search关键短语提取技能无数据输出的问题

我来帮你排查下这个问题,我之前也碰到过类似的情况,大概率是这几个环节没处理到位:

1. 索引器缺少技能输出到索引字段的映射

你已经创建了技能集和索引,但索引器需要明确把技能处理后的输出映射到索引的对应字段,这是最容易忽略的点。技能运行后生成的/document/LanguageCode和/document/KeyPhrases不会自动同步到索引里,得在索引器配置里加映射规则。

比如,在创建/更新索引器的时候,添加如下输出映射:

var indexer = new SearchIndexer(indexerName, dataSourceName, indexName)
{
    OutputFieldMappings = new List<FieldMapping>
    {
        new FieldMapping("/document/LanguageCode") { TargetFieldName = "LanguageCode" },
        new FieldMapping("/document/KeyPhrases") { TargetFieldName = "KeyPhrases" }
    }
};

// 然后用SearchIndexerClient创建/更新索引器
client.CreateOrUpdateIndexer(indexer);

2. 修正技能的Context配置

你代码里两个技能的Context都设成了/document/*,这个是错误的。Context定义了技能处理的范围,对于文档级的技能(语言检测、关键短语提取),应该设置为/document,而不是/document/*(*表示文档的子元素,这里不需要)。

修改两个技能的Context:

// 语言检测技能
var skill = new LanguageDetectionSkill(inputMappings, outputMappings) {
    Name = "Language Detection",
    Description = "Detect language",
    Context = "/document", // 修正此处
};

// 关键短语提取技能
var keyPhraseExtractionSkill = new KeyPhraseExtractionSkill(inputMappings, outputMappings) {
    Name = "KeyPhrase Extraction",
    Description = "Extract the key phrases",
    Context = "/document", // 修正此处
    DefaultLanguageCode = KeyPhraseExtractionSkillLanguage.En,
};

3. 重新运行索引器

更新技能集和索引器配置后,必须重新运行索引器,才能让新的技能逻辑应用到已有文档和新上传的文档上。你可以:

  • 在Azure Portal的搜索服务里找到对应的索引器,点击「Run」按钮手动触发;
  • 用代码调用RunIndexerAsync方法:
await client.RunIndexerAsync(indexerName);

4. 排查索引器运行日志

如果上面几步做完还是没数据,去Azure控制台查看索引器的运行日志(在索引器详情页的「Run history」里),里面会详细记录技能执行的错误信息,比如:

  • 认知服务密钥权限不足(All-in-one密钥是否正确,是否有对应的技能权限);
  • 输入字段不存在(比如/document/Text是否确实在数据源里存在);
  • 技能执行超时或其他异常。

按照这几步调整后,应该就能看到LanguageCode和KeyPhrases字段被正确填充了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:52:49