【问题标题】:How to use reserved words in Azure Search Filter?如何在 Azure 搜索筛选器中使用保留字?
【发布时间】:2017-11-28 08:42:46
【问题描述】:

我正在使用 Azure 搜索过滤器选项,如下所示

$filter=cityList/any(t: search.in(t, '1')) and name eq 'hi tech bar & restaurant' &search=*&scoringProfile=search-score&searchMode=Any&queryType=FULL

对于除保留字之外的所有单词过滤器都可以正常工作。

; / ? : @ = + &

谁能帮我找到如何在 Azure 搜索筛选器中使用保留字??

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    有两个级别的编码需要考虑。首先,OData 表达式本身。我假设您需要在字符串常量中使用特殊字符,在这种情况下,您需要编码的唯一字符是单引号,您可以通过加倍对其进行编码。例如:$filter=Name eq 'O''Neil'。第二级编码取决于您是使用 HTTP GET 还是 POST 进行搜索请求。如果你使用的是 Azure 搜索 .NET SDK,它会为你处理这个细节。如果您直接使用 REST API 并且使用 GET,则需要对过滤器表达式进行 URL 编码。如果您使用 POST,则需要像对任何其他 JSON 字符串一样对过滤器表达式进行编码。例如,您需要将\编码为\和“作为\”等。希望这会有所帮助。

    【讨论】:

    • 谢谢雅努什。我只使用 .net SDK。我面临的问题是,如果我在我的 'filter eq' 中使用 '&' 它会说“”无效的表达式:在 'cityList/any(t: search.in(t, ' 1')) 并命名为 eq"。
    • 我很失望没有人帮助我找到实际结果。没关系.. :(
    • @Vishnu 请在 GitHub 上打开一个新问题,并尽可能详细地说明您如何使用 .NET SDK 以及您为 Filter 属性传递的确切字符串。这是 Azure .NET SDK 的 GitHub 存储库链接:github.com/azure/azure-sdk-for-net/issues 提交问题时,请在标题中提及“Azure 搜索”。
    猜你喜欢
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2020-12-14
    • 2019-12-01
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多