【发布时间】: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