Порядок поиска в Azure, без учета регистра - PullRequest
0 голосов
/ 09 октября 2019

В настоящее время я использую .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.

1 Ответ

0 голосов
/ 09 октября 2019

К сожалению, вариант, который вы предложили (иметь дополнительные нормализованные поля для использования в OrderBy), является единственным обходным решением. Вы можете использовать токен-фильтр для строчных букв в этом поле - https://docs.microsoft.com/en-us/azure/search/index-add-custom-analyzers#token-filters

Пожалуйста, проголосуйте здесь, чтобы поисковая команда могла расставить приоритеты при его наборе: https://feedback.azure.com/forums/263029-azure-search/suggestions/6328658-case-insensitive-sorting-for-string-fields

...