gpt4 book ai didi

Azure 搜索顺序 Alpha 在数字之前

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

对 Azure 搜索结果进行排序时,结果的排序顺序是:以数字或特殊字符开头的字符串值位于以字母开头的字符串值之前。

据我所知,排序依据字段的第一个字母的默认排序规则是:

! ” # $ % & ' () * + , - ./. 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 搜索中的默认排序?

如果没有,是否有其他方法可以完成此业务需求?也许以某种方式对以字母开头的产品描述进行加权,使其比那些不以字母开头的产品描述具有更大的权重……但我认为,当数据加载到搜索存储库时而不是检索数据时,必须发生这种情况。我希望能够在检索搜索结果时自定义排序,以便它可以应用于任何字段。

最佳答案

这是我迄今为止提出的解决方案,该解决方案应该能够满足业务需求,而不需要他们做任何额外的工作。欢迎提出建设性批评。

请注意,我在实现 Azure 搜索时涉及两项服务:一个是从 Cosmos 数据库加载搜索索引数据的 Azure Function,另一个是用于查询搜索索引的 Web API。

  1. [Azure Function] 在搜索索引中创建一个自定义字段,其名称类似于“defaultOrderBy”,类型为“Edm.Int32”。该字段将用作默认排序字段,并且无法通过搜索查询检索。

  2. [Azure Function] 在配置或设置文件中创建一个键值对集合,为每个排序字符分配一个数字“权重”。

例如:

A = 0
B = 2
C = 4

...

! = 84
" = 86

...

0 = 112
1 = 114

...
  • [Azure Function] 加载搜索索引数据时,新的“defaultOrderBy”列将填充与产品描述字段中的第一个字母等效的“权重”。例如,如果产品描述是“10 天 super 神奇咀嚼维生素”,则第一个字符是“1”,它将转换为权重 114,并保存在“defaultOrderBy”索引字段中。

  • [Web API] 调用搜索 API 获取产品列表时,默认排序依据将是新的“defaultOrderBy”列。因为它只包含代表我们自定义搜索排序权重的数字,所以排序应该按需要进行。

  • 关于Azure 搜索顺序 Alpha 在数字之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61823563/

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