gpt4 book ai didi

c# - 在 Azure 搜索 .NET SDK 中按复杂类型排序?

转载 作者:行者123 更新时间:2023-12-02 08:27:27 25 4
gpt4 key购买 nike

所以我有一个使用父/子结构构建的索引,如下所示:

    {
"Id": "13704",
"StreetNumber": "29",
"StreetName": "Fiction Road",
"PostalCode": "DD1 G33"
"CityName": "Fiction City",
"Property": {
"ID": 13592,
"ParentPropertyID": 123
}
}

我想按 Property/ParentPropertyID 进行排序,这在使用以下查询字符串的 Azure 门户上运行良好:

search=DD1 G33&searchmode=all&$orderby=Property/ParentPropertyID asc

这按预期工作,并返回与此邮政编码匹配的记录列表(按指定顺序排序)。但是,当我尝试使用 Azure 搜索 SDK 在 C# 中执行此操作时,它返回结果,但似乎没有应用排序依据。如果我使用父字段之一(例如 StreetNumber),它确实可以工作,因此它似乎仅限于复杂类型。代码:

            SearchParameters parameters;
DocumentSearchResult<TempAddress> results;

parameters =
new SearchParameters()
{
SearchMode = SearchMode.All,
OrderBy = new[] { "Property/ParentPropertyID asc" }
};

results = _searchIndexClient.Documents.Search<TempAddress>("DD1 G33", parameters);

结果对象返回正确结果的列表,但尚未应用 OrderBy。它似乎找到了没有任何问题的字段,因为它不会抛出任何错误。我似乎也找不到任何按复杂类型排序的示例,或者任何涉及复杂类型的示例都使用与我上面使用的相同的语法(即 ParentProp/ChildProp)。如果我改变

OrderBy = new[] { "Property/ParentPropertyID asc" }

至:

OrderBy = new[] { "StreetNumber desc" }

OrderBy 工作没有问题。我真的不明白为什么这在代码中不起作用,但在门户上起作用?

最佳答案

感谢 sathya_vijayakumar-MSFT,我已经找出了问题所在,并发布了答案,以防其他人遇到同样的问题。我使用的是 Microsoft.Azure.Search Nuget 包,该包仅支持版本 10,但版本 10 面向 2019-05-06 搜索 API,该 API 似乎不支持按复杂类型排序。如果我自己使用 2020-06-30 API 手动进行查询,则效果很好。使用2019-05-06版本的相同手动查询不起作用!

事实证明,针对此 API 版本的 SDK 版本 11 可用,但它位于不同的 NuGet 包下:Azure.Search.Documents,这是对原始包的重大更改(请参阅 https://learn.microsoft.com/en-us/azure/search/search-dotnet-sdk-migration-version-11 )。

关于c# - 在 Azure 搜索 .NET SDK 中按复杂类型排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63901479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com