В настоящее время я использую .Net Core 2.2 и использую пакет Microsoft.Azure.Search.Model для использования поиска Azure.
Проблема: я не могу выполнить OrderBy без учета регистра.
Я немного исследовал, но не смог найти чистого решения, кроме создания дополнительных полей в поисковом индексе, который включает все строчные строчные поля исходных полей. Мне не нравится это решение, потому что у нас есть более 6 полей, которые нам нужно упорядочить. Это означает, что у нас будет 6 дополнительных полей только для сортировки в поисковом индексе, что на самом деле не является оптимальным решением для меня.
public override async Task<DocumentSearchResult<ProjectSearchModel>> SearchAsync(ISearchRequest input)
{
if (input is ProjectSearchRequest request)
{
var parameters =
new SearchParameters(includeTotalResultCount: true)
{
Filter = request.Status.Equals("All") ? $"Account eq '{request.Account}'" : $"Account eq '{request.Account}' and Status eq '{request.Status}'",
OrderBy = new[] { $"Account desc" },
Top = request.Take,
Skip = request.Skip
};
var searchResult = await base.SearchAsync(parameters, request.Text);
return searchResult;
}
else
{
throw new Exception("Account code is necessary for search in projects. ProjectSearchRequest -> ISearchRequest casting error.");
}
}
Ответ сортируется по учетной записи, но сначала заглавными, а строчнымипосле. Например, z будет следовать за A, что не имеет смысла для наших конечных пользователей. Я хотел бы, чтобы z приходил сразу после Z или вместе с Z.