范围查询
执行数字范围查询
对数字字段执行范围查询会返回介于给定起始值和结束值之间的值
FT.SEARCH index "@field:[start end]"
你还可以使用 FILTER
参数,但你需要知道查询执行计划是不同的,因为该过滤器是在查询字符串 (例如,*
) 被评估之后应用的
FT.SEARCH index "*" FILTER field start end
起始值和结束值
起始值和结束值在默认情况下是包含在内的,但你可以给一个值加上前缀 (
来将其排除在范围之外。
值 -inf
、inf
和 +inf
是允许你定义开放范围的有效值。
结果集
开放范围查询可能导致一个大的结果集。
在默认情况下,FT.SEARCH
仅返回前十个结果。LIMIT
参数可帮助你滚动浏览结果集。SORTBY
参数确保结果集中的文档按指定顺序返回。
FT.SEARCH index "@field:[start end]" SORTBY field LIMIT page_start page_end
你可以在 [FT.SEARCH
命令参考](/commands/ft.search/) 中找到有关使用 LIMIT
和 SORTBY
的更多详细信息。
示例
本部分中的示例使用具有以下字段的架构
字段名称 | 字段类型 |
---|---|
价格 |
NUMERIC |
以下查询查找价格范围大于或等于 500 美元且小于或等于 1000 美元(500 <= price <= 1000
)的自行车
FT.SEARCH idx:bicycle "@price:[500 1000]"
这在语义上等同于
FT.SEARCH idx:bicycle "*" FILTER price 500 1000
对于价格大于 1000 美元的自行车(price > 1000
),可以使用
FT.SEARCH idx:bicycle "@price:[(1000 +inf]"
以下示例通过返回五辆最便宜的自行车,返回价格低于或等于 2000 美元(price <= 2000
)的自行车
FT.SEARCH idx:bicycle "@price:[-inf 2000] SORTBY price LIMIT 0 5"