lucene Azure搜索筛选器search.ismatch函数不适用于特殊字符(如连字符和单引号)的混合

4xy9mtcn  于 2022-11-07  发布在  Lucene
关注(0)|答案(2)|浏览(108)

我有下面的代码,

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

此筛选器应该会为我提供城市名为Paris-l 'Hopital的记录。请注意,我使用另一个单引号对搜索词中间的单引号进行转义。使用反斜杠对连字符进行转义。此外,城市字段使用Microsoft Analyzer。
虽然我可以看到记录存在于搜索索引中,但我不明白为什么此过滤器没有返回我所期望的记录。任何输入都将受到高度赞赏。
参考文件https://learn.microsoft.com/en-us/azure/search/search-query-odata-full-text-search-functionshttps://learn.microsoft.com/en-us/azure/search/query-simple-syntax
谢谢你

e1xvtsh3

e1xvtsh31#

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

eqfvzcg8

eqfvzcg82#

通常,如果您有特定语言的内容,我会建议您考虑a language-specific analyzer。对于地址,这是一个棘手的问题,因为您可能必须支持所有类型的地址。您是否尝试过使用法语分析器之一?它可能会在标记典型的法语内容方面做得更好。

相关问题