Я хочу найти строку, содержащую специальные символы, с помощью 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$@\!
), я получаю правильный результат. Но когда я удаляю последний !
и пишу подстановочный знак *
вместо этого, я не получаю никаких результатов. Без знака нет результата, а также.
Есть ли способ правильно написать специальные символы, чтобы поиск возвращал результаты по совпадению, например. когда я пишу $@\!*
?