【问题标题】:Azure Search Filter search.ismatch function doesnt work with mixture of special characters like hiphen and single quoteAzure 搜索筛选器 search.ismatch 函数不适用于混合使用连字符和单引号等特殊字符
【发布时间】:2020-12-08 21:38:50
【问题描述】:

我有以下代码,

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

此过滤器应为我提供包含名称为 Paris-l'Hopital 的 City 的记录。请注意,我正在用另一个单引号转义搜索词中间的单引号。 Hiphen 使用反斜杠进行转义。另外city字段使用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

谢谢

【问题讨论】:

    标签: azure search lucene azure-cognitive-search azure-search-.net-sdk


    【解决方案1】:

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

    【讨论】:

    • 感谢您的意见。不确定我们是否真的需要改变它。例如如果我们正在搜索“stockton-on-tees”之类的内容。它工作正常。我有一种感觉,如果我们有一个带有破折号和单引号的搜索词,那么它会中断
    【解决方案2】:

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

    【讨论】:

    • 谢谢 Dan,该字段不仅存储法国城市,还存储来自世界各地的城市。因此我不能只依赖法语分析器。
    猜你喜欢
    • 2022-01-09
    • 2021-11-07
    • 2016-10-15
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2021-07-23
    • 2017-07-14
    • 2014-08-09
    相关资源
    最近更新 更多