范围查询

执行数字范围查询

数字字段上的范围查询返回给定开始值和结束值之间的值:

FT.SEARCH index "@field:[start end]"

您也可以使用FILTER参数,但您需要知道查询执行计划是不同的,因为过滤器是在查询字符串(例如*)被评估之后应用的:

FT.SEARCH index "*" FILTER field start end

开始值和结束值

默认情况下,开始值和结束值是包含在内,但您可以(在值前面添加一个值以将其排除在范围之外。

-infinf+inf是允许您定义开放范围的有效值。

结果集

开放范围查询可以产生很大的结果集。

默认情况下,FT.SEARCH仅返回前十个结果。该LIMIT参数可帮助您滚动浏览结果集。该SORTBY参数可确保结果集中的文档按指定顺序返回。

FT.SEARCH index "@field:[start end]" SORTBY field LIMIT page_start page_end

您可以在 [命令参考](/commands/ft.search/)中找到有关使用LIMITand 的更多详细信息。SORTBYFT.SEARCH

示例

本节中的示例使用具有以下字段的架构:

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

price <= 2000下面的示例通过返回五辆最便宜的自行车来返回价格低于或等于 2000 美元 ( ) 的自行车:

FT.SEARCH idx:bicycle "@price:[-inf 2000] SORTBY price LIMIT 0 5"

非数字范围查询

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

给此页面评分
返回顶部 ↑