【问题标题】:Ordering by complex types in Azure Search .NET SDK?在 Azure 搜索 .NET SDK 中按复杂类型排序?
【发布时间】:2021-01-02 04:32:31
【问题描述】:

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

    {
            "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

这按预期工作,并返回与此邮政编码匹配的记录列表,按指定排序。但是,当我尝试在 C# 中使用 Azure 搜索 SDK 执行此操作时,它会返回结果,但似乎没有应用 order by。如果我改用其中一个父字段(例如 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 没有问题。我真的不明白为什么这在代码中不起作用,但在门户网站上起作用?

【问题讨论】:

  • 代码看起来不错。我在最后尝试过,排序对于复杂类型来说效果很好。请检查 SDK 版本,确保您使用的是最新版本。另外,您能否尝试捕获跟踪(您可以使用 Fiddler 或任何工具)。看看请求和解码的响应是怎样的。看看有没有区别。
  • 谢谢,我已经意识到问题所在了。我使用的是针对 API 版本 2019-05-06 的 SDK 的 v10,但是在手动查询索引时,我使用的是 2020-06-30。刚刚发现在单独的 Nuget 包下有 SDK 的 v11 可用。

标签: c# azure azure-cognitive-search azure-search-.net-sdk


【解决方案1】:

感谢 sathya_vijayakumar-MSFT,我找到了问题所在,发布了答案以防其他人遇到同样的问题。我使用的是 Microsoft.Azure.Search Nuget 包,它只升级到版本 10,但版本 10 的目标是 2019-05-06 搜索 API,它似乎不支持按复杂类型排序。如果我自己使用 2020-06-30 API 手动进行查询,它可以正常工作。使用 2019-05-06 版本同样的手动查询无效!

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

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多