Azure 搜索:Orderby 如何处理空整数值?

Azure Search: How does Orderby treat null integer values?

我有一个从 AngularJS 应用程序访问的 Azure 搜索索引,我 运行 遇到了一些问题。我的一个 table 有一个 属性,它为 table 中的行定义了一个 "Sort Order",它将在应用程序中用于确定显示顺序table 中的项目给用户。排序顺序是一个整数,这里的目标是当管理员用户将 "Sort Order" 定义为 1 时,该项目将首先出现,2 将出现在第二个,依此类推。

我的首选解决方案是通过升序对查询结果进行排序,然后将其输出给用户,但我 运行 遇到空值问题,因为排序顺序不是t 必填字段。我所有的模型都是用 C# 编写的,因此空条目被设置为 0,因此如果按升序排序,则没有定义排序顺序的条目将首先显示,这与我想要的完全相反。

有很多不同的方法可以处理这个问题,但最简单的方法是将 SortOrder 属性 设置为可为 null 的 int。唯一的问题是我不确定 Azure 搜索如何使用其 OrderBy 语句处理空值。我最初的想法是,如果按升序排序,它将首先按升序列出所有数值,然后将空值踢到最后。如果是这样,那就太完美了,但我只是想看看是否确实如此。

所以,简而言之,我的问题是:Azure 搜索会将空值视为大于还是小于定义的整数值?换句话说,如果我按整数升序排序,空值会出现在顶部还是底部?

Azure 搜索会将那些 $orderby 列恰好为空的文档放在结果的末尾。无论您选择按 "descending" 还是 "ascending" 订购,都是如此。

如果有多个文档的 $orderby 列为空,请放心,所有文档都将放在末尾附近,但理想情况下,您应该将 "null-valued" 文档中的顺序视为未定义。