Azure搜索筛选器search.ismatch函数不适用于特殊字符的混合,例如hiphen和单引号

问题描述

我有以下代码

filter="search.ismatch('Paris\-l''Hopital*','DestinationAddress/City','full','all')" 

此过滤器应给我记录名称为Paris-l'Hopital的City。请注意,我在搜索字词的中间用另一个单引号转义。 Hiphen使用反斜杠转义。此外,“城市”字段使用Microsoft Analyzer。

虽然我可以看到记录存在于搜索索引中,但我不明白为什么此过滤器不返回我期望的记录。任何输入将不胜感激。

参考 https://docs.microsoft.com/en-us/azure/search/search-query-odata-full-text-search-functions https://docs.microsoft.com/en-us/azure/search/query-simple-syntax

谢谢

解决方法

默认情况下,它将连字符视为停用词。您需要更改默认分析器,以使其在找到“-”时不会分成不同的词。

,

通常,如果您有特定语言的内容,建议您考虑使用a language-specific analyzer。对于地址,这很棘手,因为您可能必须支持所有类型的地址。您是否尝试过使用其中一种法国分析仪?在标记典型的法语内容上可能会做得更好。