我有一个从AngularJS应用中命中的Azure搜索索引,但遇到了一些问题。我的一个表具有一个属性,该属性为表中的行定义了“排序顺序”,该属性将在应用程序中用于确定以何种顺序向用户显示表中的项目。排序顺序是一个整数,这里的目标是当管理员用户将“排序顺序”定义为1时,该项目将首先出现,第二个出现第二个,依此类推。
我的首选解决方案是仅对查询结果进行升序排序并向用户吐出,但由于“排序顺序”不是必填字段,因此我遇到了空值问题。我所有的模型都是用C#编写的,因此将空条目设置为0,因此,如果按升序进行排序,则将首先显示未定义排序顺序的条目,这与我想要的完全相反。
我可以使用很多不同的方法来处理此问题,但是最简单的方法是将SortOrder属性设置为可为null的int。唯一的问题是我不确定Azure Search如何使用其OrderBy语句处理空值。我最初的想法是,如果按升序排序,它将首先按升序列出所有数值,然后将空值踢到末尾。如果是这样,那是完美的,但是我只是想找出是否确实如此。
因此,简而言之,我的问题是:Azure搜索会将空值视为大于还是小于定义的整数值吗?换句话说,如果我订购按升序排列的整数,则空值会出现在顶部还是底部?
答案 0 :(得分:1)
Azure搜索将把那些$ orderby列恰好为空的文档放置到结果的结尾。无论您选择按“降序”还是“升序”订购,都是如此。
如果有多个文档的$ orderby列为空,请放心所有文档都将放在末尾,但理想情况下,您应将“空值”文档中的顺序视为未定义。