Azure搜索顺序(不区分大小写)>>

问题描述 投票:0回答:1

我目前正在使用.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一起出现。

我目前正在使用.Net Core 2.2,并且一直在使用Microsoft.Azure.Search.Model程序包来使用Azure搜索。问题:我无法区分大小写地实现OrderBy。我研究了一个...

c# azure msdn case-insensitive azure-search
1个回答
0
投票

不幸的是,您建议的选项(在OrderBy中使用要使用额外的大小写标准化字段)是唯一的解决方法。您将使用令牌过滤器将字段-https://docs.microsoft.com/en-us/azure/search/index-add-custom-analyzers#token-filters

© www.soinside.com 2019 - 2024. All rights reserved.