【问题标题】:Azure Search searching by not full word with special characters is not workingAzure 搜索按非完整单词和特殊字符进行搜索不起作用
【发布时间】:2020-02-15 11:06:33
【问题描述】:

我想使用 Azure Search .NET SDK 搜索包含特殊字符的字符串。

我尝试转义每个特殊字符,尝试使用 full query syntax 并尝试使用通配符,但都没有按预期工作。

方法如下:

public virtual async Task<SearchResultDto<T>> Search(string query, SearchOptionsInput searchOptionsInput)
{
   if (!_azureOptions.IsEnabled)
   {
      return null;
   }

   var searchIndexClient = GetSearchIndexClientForGivenType();
   var searchParameters = _objectMapper.Map<SearchParameters>(searchOptionsInput);

   searchParameters.QueryType = QueryType.Full;

   var searchResult = await searchIndexClient.Documents.SearchAsync<T>(query, searchParameters);

   return new SearchResultDto<T>
        {
                Count = searchResult.Count,
                Results = searchResult.Results.Select(r => r.Document).ToList(),
                FacetResults = searchResult.Facets,
        };
}

我的文档将Name 字段设置为$@!Q$@!。当我在查询中写它并转义感叹号(如$@\!Q$@\!)时,我得到了正确的结果。但是当我删除最后一个! 并在查询中写入* 通配符时,我没有得到任何结果。没有任何迹象也没有结果。

有没有办法正确编写特殊字符,以便搜索将在匹配时返回结果,例如。当我写$@\!*

【问题讨论】:

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


    【解决方案1】:

    目前没有可用于转义特殊字符的内置方法。但特殊字符必须转义才能用作搜索文本的一部分。您可以通过在它们前面加上反斜杠 \ 来转义它们。需要转义的特殊字符包括:

    + - && || ! ( ) { } [ ] ^ " ~ * ? : \ /
    

    例如,要转义通配符,请使用**\***

    更多详情请查看以下链接:

    https://docs.microsoft.com/en-us/azure/search/query-lucene-syntax#escaping-special-characters

    请在以下链接中为实现此功能的用户语音请求投票,这将有助于我们确定请求的优先级。

    https://feedback.azure.com/forums/263029-azure-search/suggestions/32114773-provide-method-for-escaping-characters-in-the-sear

    希望对你有帮助。

    【讨论】:

    猜你喜欢
    • 2020-09-24
    • 2021-10-11
    • 2011-11-28
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多