首页 > 解决方案 > 有没有办法指定一个不会在连字符上中断但会在其他标点符号上中断的 Azure 认知搜索分析器

问题描述

“非紧急”一词在语义上与“非”和“紧急”两个词的语义不同。

特别是,搜索“紧急”不应匹配“非紧急”。但是,将所有其他单词按所有其他标点符号分开仍然是有意义的。例如

"In a situation that is a non-emergency, do not call 911."

空格分析器不是我想要的,因为我仍然想打破其他没有那么多(任何?)语义含义的标点符号。

这似乎是许多人想要拥有的一个非常常见且合理的用例,但它似乎在 Azure 认知搜索 (ACS) 中不可用。

这篇文章似乎暗示 Lucene 有它: Lucene Index questions with "-" character

我仍在努力安装 ACS,但是在与 MS 人员的几封电子邮件中,我没有得到关于如何执行此操作的满意(简单)答案。我只是对 Lucene 稍微了解一点,就知道这就是我想要的……

提前致谢。

标签: azure-cognitive-searchanalyzer

解决方案


您分享的帖子似乎暗示 Lucene 中的 ClassicAnalyzer 是您正在寻找的解决方案。虽然 Azure 认知搜索中默认不支持经典分析器,但您应该能够创建一个使用 ClassicTokenizer 的自定义分析器,该分析器受支持并且可能与您正在寻找的最接近。

您可能要考虑的另一个选项是PatternAnalyzer,它受 Azure 认知搜索支持,因此您可以定义最适合您的正则表达式模式。

有助于实现这两个选项以及尝试许多其他选项的文档:https ://docs.microsoft.com/azure/search/index-add-custom-analyzers


推荐阅读