Azure 认知搜索 - 如何防止搜索复数形式也返回单数匹配项

Azure Cognitive Search - how to prevent searching for plural form also returning singular matches

我们有一个用于全文搜索的 Azure 认知搜索索引。
目前,当用户搜索复数词(例如 Buildings)时,也会匹配单数形式(building)。 我们想限制这种行为,以便只返回复数匹配项。 我已经通读了 odata 文档,但找不到任何关于我们如何通过过滤器或索引配置中的 search.ismatch 中的参数来实现此目的的参考。

复数形式和单数形式可能都匹配,因为该字段配置有默认语言分析器,该分析器执行词干提取。如果您正在寻找完全匹配,您可以在过滤器中使用 'eq' 运算符。如果您想要不区分大小写(但在其他方面完全匹配)的匹配,您可以尝试 normalizers(请注意,此功能在撰写本文时处于预览状态。)

如果您需要比不区分大小写的匹配更复杂的匹配行为,您应该查看 custom analyzers。它们允许您自定义标记化的行为,以及有选择地使用(或不使用)词干提取和其他词法分析技术。

要添加到 Bruce 的回答中,

自定义规范化器支持许多与自定义分析器相同的标记和字符过滤器。为了决定哪一个最适合您的需求,请考虑以下问题:

  1. 这个 plural/singular 匹配行为会用在 filtering/sorting/faceting 操作中吗?如果是这样,预配置或自定义规范化器将使您能够优化 search filter. You can build your own or choose from the list of pre-configured ones, and it supports more than case insensitivity. See the list of supported char and token 过滤器返回的结果。
  2. 无论是否使用过滤器,您都需要在全文搜索中使用这种 plural/singular 匹配行为吗?如果是这样,请考虑使用上面建议的自定义分析器 Bruce。

Afaik,请注意规范化器只会影响 filtering/sorting/faceting 结果。此外,规范器是对 filter/sort/facet 查询执行此“规范化”的唯一方法。设置分析器不会影响这些类型的查询。