【发布时间】:2021-08-24 12:11:50
【问题描述】:
如何在 Redis 搜索中完成 MySQL 中可用的这种自定义按字段排序功能?
从产品 ORDER BY FIELD(id,3,2,1,4) 中选择 *
出于某种业务原因,我需要强制执行自定义订单。
【问题讨论】:
-
你能提供一个你的redis数据结构的例子吗?你用的是什么redis数据类型?
如何在 Redis 搜索中完成 MySQL 中可用的这种自定义按字段排序功能?
从产品 ORDER BY FIELD(id,3,2,1,4) 中选择 *
出于某种业务原因,我需要强制执行自定义订单。
【问题讨论】:
RediSearch 中不存在与 FIELD 功能等效的功能。
使用 FT.SEARCH / SORTBY,您可以使用字段对结果进行排序。 在您的哈希中,您可以创建一个新字段 (NUMERIC SORTABLE),其中包含一个用于对结果进行排序的值。当然,只有当您不想在每个查询上指定不同的顺序时,这才有效。
第二个选项:这可以通过使用具有适当功能的 FT.AGGREGATE 来处理。您可以查看existing function,看看是否可以使用它。如果该功能不存在,你可以做一个feature request。
第三种选择是使用extension API 实现您自己的评分功能(但它可能过度工程......)
【讨论】: