在 Azure 认知搜索技能集中,我可以为集合 (Edm.Double) 设置默认值吗?

时间:2021-01-08 13:29:08

标签: azure azure-cognitive-search

我正在使用 v10 SDK (Microsoft.Azure.Search) 来构建技能集。我有一个索引,其中包含一个定义为 Edm.Double 集合的货币字段。这将保存文档中的所有货币价值。

当有货币价值时,一切正常。

当文档中没有货币值时,该值将为空并且输出映射给出警告:

<块引用>

无法将输出字段“钱”映射到搜索索引。检查索引器的“outputFieldMappings”属性。

这只是一个警告,但它确实填满了日志;-)

这是我尝试默认值的 C# 代码(以下示例 2 here

_skillset.Skills.Add(new ConditionalSkill {
  Context = "/document/pages/*",
  Inputs = new List<InputFieldMappingEntry> {
    new InputFieldMappingEntry("condition", "= $(/document/pages/*/output_money) == null"),
    new InputFieldMappingEntry("whenTrue", "= []"),
    new InputFieldMappingEntry("whenFalse", "/document/pages/*/output_money"),
  },
  Outputs = new List<OutputFieldMappingEntry> {
    new OutputFieldMappingEntry("output", "money")
  }
});  

当我尝试这个时,我得到一个错误:

Microsoft.Rest.Azure.CloudException: One or more skills are invalid. Details: Input 'whenTrue' source is an invalid expression (= []): Parsing failure: unexpected 
'['; expected ConditionalLevel (Line 1, Column 3); recently consumed: = 
   at Microsoft.Azure.Search.SkillsetsOperations.CreateOrUpdateWithHttpMessagesAsync(String skillsetName, Skillset skillset, SearchRequestOptions searchRequestOptions, Dictionary`2 customHeaders, CancellationToken cancellationToken)
   at Microsoft.Azure.Search.SkillsetsOperationsExtensions.CreateOrUpdateAsync(ISkillsetsOperations operations, Skillset skillset, SearchRequestOptions searchRequestOptions, AccessCondition accessCondition, CancellationToken cancellationToken)
   at Elastacloud.KnowledgeMiner.Standalone.App.Program.Setup(IConfigurationRoot conf) in C:\src\km-standalone\src\Program.cs:line 61
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at System.Threading.Tasks.Task`1.get_Result()

0 个答案:

没有答案