Azure 搜索按非完整单词和特殊字符搜索不起作用

Azure Search searching by not full word with special characters is not working

我想使用 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$@\!)时,我得到了正确的结果。但是当我删除最后一个 ! 并在查询中写入 * 通配符时,我没有得到任何结果。没有任何征兆也没有结果

有没有办法正确写入特殊字符,以便搜索 return 匹配结果,例如。当我写 $@\!*?

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

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

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

更多详情请查看下方link:

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

请在下面为实施此功能的用户语音请求投票 link,这将帮助我们确定请求的优先级。

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

希望对您有所帮助。