【问题标题】:Azure Search - Conditional Field MappingAzure 搜索 - 条件字段映射
【发布时间】:2019-02-05 05:27:46
【问题描述】:

所以这是我的问题。 我正在构建一个索引,其中包含一个充满文档(docx、pptx、txt、pdf)的 blob 存储作为数据源 这些文件使用不同的语言(准确地说是 2 种语言,荷兰语 (nl) 和英语 (en))。

为了检测语言,我使用了一种内置技能,它返回一个带有语言代码的新输出。

我想要做的是根据语言将文档的文本映射到一个字段。 因此,如果文档包含英文文本,则需要转到字段 [text_en] 如果是荷兰语,则需要将其映射到 [text_nl] 字段。

我该怎么做? 有人知道吗?

【问题讨论】:

  • 嗨,你找到解决办法了吗?
  • 无标准解决方案。我已经构建了一个 Azure 函数,我称之为自定义技能,可以为我进行拆分。由于数据传输的原因,可能不是最高效的解决方案,但它确实做到了。
  • 我们只是采用了多个索引器的方法来实现这一点。您可以将源字段 (text) 映射到 (text_en) 或 (text_nl)。如果您将 blob 放在 EN 和 NL 的单独文件夹中,您可以为每个文件夹设置一个索引器,将其放置在索引的正确字段中。 ....docs.microsoft.com/en-us/azure/search/…
  • @TheDream 确实是一个解决方案,但是您已经需要将文件拆分到 2 个文件夹中。不是这样的,我这边的最终用户只是把文件放在一个文件夹里,什么都不关心。
  • 唯一的方法是使用自定义技能。您可以在这里添加您的建议:feedback.azure.com/forums/263029-azure-search

标签: indexing mapping multilingual microsoft-cognitive azure-cognitive-search


【解决方案1】:

自 2019 年 4 月起,Azure 添加了一项名为“Conditional”的新内置技能。

它允许您指定一个布尔条件(例如“= $(/document/language) == 'nl'”)并根据结果返回一个值,无论是静态的还是链接到文档树的节点。

对于你的情况,它看起来像这样,

{
"@odata.type": "#Microsoft.Skills.Util.ConditionalSkill",
"context": "/document",
"inputs": [
    { "name": "condition", "source": "= $(/document/language) == 'nl'" },
    { "name": "whenTrue", "source": "/document/content" },
    { "name": "whenFalse", "source": "= null" }
],
"outputs": [ { "name": "output", "targetName": "text_nl" } ]
}

您需要为每种语言定义一项条件技能。

【讨论】:

    猜你喜欢
    • 2022-11-03
    • 2019-12-08
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多