我正在使用 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()