我想使用 Azure Search .NET SDK 搜索包含特殊字符的字符串。
我尝试转义每个特殊字符,尝试使用完整查询语法
并尝试使用通配符,但没有任何效果如预期。
方法如下:
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$@\!
)时,我得到了正确的结果。但是当我删除最后一个 !
并在查询中写入 *
通配符时,我没有得到任何结果。没有任何迹象也没有结果。
有没有办法正确编写特殊字符,以便搜索返回匹配的结果,例如。当我写 $@\!*
?
最佳答案
目前没有内置方法可以转义特殊字符。但是必须转义特殊字符才能用作搜索文本的一部分。您可以通过在它们前面加上反斜杠 \
来转义它们。需要转义的特殊字符包括:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /
例如,要转义通配符,请使用 **\***
。
有关更多详细信息,请查看以下链接:
https://learn.microsoft.com/en-us/azure/search/query-lucene-syntax#escaping-special-characters
请在下面的链接中为实现此功能的用户语音请求投票,这将帮助我们确定请求的优先级。
希望对您有所帮助。
关于c# - Azure 搜索按非完整单词和特殊字符搜索不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58451056/