范围查询

执行数值范围查询

对数值字段进行范围查询将返回在给定开始值和结束值之间的值

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/) 中找到有关使用 LIMITSORTBY 的更多详细信息。

示例

本节中的示例使用以下字段的模式

字段名称 字段类型
price 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"

非数字范围查询

您可以在其专用文章中了解有关非数字范围查询的更多信息,例如 地理空间向量搜索 查询。

RATE THIS PAGE
Back to top ↑