azure-cognitive-search - 有没有办法指定一个不会在连字符上中断但会在其他标点符号上中断的 Azure 认知搜索分析器
问题描述
“非紧急”一词在语义上与“非”和“紧急”两个词的语义不同。
特别是,搜索“紧急”不应匹配“非紧急”。但是,将所有其他单词按所有其他标点符号分开仍然是有意义的。例如
"In a situation that is a non-emergency, do not call 911."
空格分析器不是我想要的,因为我仍然想打破其他没有那么多(任何?)语义含义的标点符号。
这似乎是许多人想要拥有的一个非常常见且合理的用例,但它似乎在 Azure 认知搜索 (ACS) 中不可用。
这篇文章似乎暗示 Lucene 有它: Lucene Index questions with "-" character
我仍在努力安装 ACS,但是在与 MS 人员的几封电子邮件中,我没有得到关于如何执行此操作的满意(简单)答案。我只是对 Lucene 稍微了解一点,就知道这就是我想要的……
提前致谢。
解决方案
您分享的帖子似乎暗示 Lucene 中的 ClassicAnalyzer 是您正在寻找的解决方案。虽然 Azure 认知搜索中默认不支持经典分析器,但您应该能够创建一个使用 ClassicTokenizer 的自定义分析器,该分析器受支持并且可能与您正在寻找的最接近。
您可能要考虑的另一个选项是PatternAnalyzer,它受 Azure 认知搜索支持,因此您可以定义最适合您的正则表达式模式。
有助于实现这两个选项以及尝试许多其他选项的文档:https ://docs.microsoft.com/azure/search/index-add-custom-analyzers
推荐阅读
- python - Python:将新项目附加到熊猫数据框中的列表时出错
- reactjs - 使用 react-bootstrap 分页一次只显示 10 页
- c# - 为现有绑定设置 NotifyOnTargetUpdated
- javascript - 从 ajax 调用返回视图
- reactjs - NOT NULL 约束失败:accounts_personalcolor.user_id
- ios - 如何在应用启动时将 IOS ScrollView 居中?
- log4j2 - 如何为自定义 swagger 代码生成模块插入 log4j 框架
- c# - 为什么按 count(lab_results.testid) desc 排序在 C# 中不起作用 - 但在 SQL Server 中很好?
- pandas - 在 Orange 中分组,数据挖掘
- dataframe - 我应该什么时候重新分区我的数据框?