【发布时间】:2020-09-01 12:49:39
【问题描述】:
从 Azure 搜索中对结果进行排序时,结果的排序顺序是,以数字或特殊字符开头的字符串值排在之前以字母开头的字符串值。
据我所知,order-by 字段首字母的默认排序规则是:
! ” # $ % & ' () * + , - ./. 0 1 2 3 4 5 6 7 8 9. :;< = >? @. A B C D E F G H I J K L M N...
为了满足业务需求,我需要对结果值进行自定义排序,如下所示:
A B C D E F G H I J K L M N.! ” # $ % & ' () * + , - ./. 0 1 2 3 4 5 6 7 8 9. :;< = >? @. ...
希望此排序顺序显示以字母开头的产品描述在以数字或特殊字符开头的产品描述。
有没有办法自定义 Azure 搜索中的默认排序?
如果没有,是否有其他方法可以完成此业务需求?也许以某种方式对以字母开头的产品描述进行加权,使其比不以字母开头的产品描述具有更大的权重……但我认为这必须在数据加载到搜索存储库时而不是在检索数据时发生。我希望能够在检索搜索结果时自定义排序,以便将其应用于任何字段。
【问题讨论】:
-
'!' 的关键 ascii是 33,而“A”是 65,“a”是“97”。我想不出办法来实现这一目标。
-
是的,即使没有向 Azure 搜索团队寻求魔法,我也不太确定如何进行这种级别的订购定制!
-
我的方法是有一个没有特殊字符的辅助字段,仅用于订购
-
虽然我喜欢这个想法,但 Thiago,一个新的排序字段将排序逻辑推送到业务上,而不是用代码解决问题。即,一些业务用户将不得不为每个产品提供替代描述,而不是让代码“弄清楚”。
-
不,您可以复制您将启用排序的每个字段的内容,并使用删除特殊字符的分析器,在订购时,只需指定复制字段而不是原始字段。用户端没有交互。
标签: azure azure-cognitive-services azure-search-.net-sdk