精确匹配查询
执行简单的精确匹配查询
精确匹配查询允许您选择字段与特定值匹配的所有文档。
您可以对多种字段类型使用精确匹配查询。查询语法因类型而异。
本文中的示例使用具有以下字段的架构:
| 字段名称 | 字段类型 |
|---|---|
description |
TEXT |
condition |
TAG |
price |
NUMERIC |
您可以在快速入门指南中找到有关创建索引和加载演示数据的更多详细信息。
数值字段
要对数字字段进行精确匹配查询,需要构造具有相同起始值和终止值的范围查询:
FT.SEARCH index "@field:[value value]"
or
FT.SEARCH index "@field:[value]" DIALECT 2 # requires v2.10
or
FT.SEARCH index "@field==value" DIALECT 2 # requires v2.10
如范围查询一文中所述,您还可以使用以下FILTER参数:
FT.SEARCH index "*" FILTER field start end
以下示例显示如何查询价格恰好为 270 美元的自行车:
FT.SEARCH idx:bicycle "@price:[270 270]"
FT.SEARCH idx:bicycle "@price:[270]" # requires v2.10
FT.SEARCH idx:bicycle "@price==270" # requires v2.10
FT.SEARCH idx:bicycle "*" FILTER price 270 270
标签字段
标签是一小段文本序列,例如“新”或“洛杉矶”。
重要的:
如果需要查询短文本,请使用标签查询而不是全文查询。标签字段在存储索引条目时更节省空间,并且通常可以降低精确匹配查询的查询复杂度。您可以通过以下方式构建单个标签的标签查询:
FT.SEARCH index "@field:{tag}"
笔记:
对于标签查询来说,花括号是必需的。这个简短的例子向你展示如何查询新自行车:
FT.SEARCH idx:bicycle "@condition:{new}"
对于涉及包含特殊字符的标签的精确匹配查询,请使用双引号和DIALECT 2。从 v2.10 开始,在涉及双引号标签的查询中,唯一需要转义的字符是双引号字符。以下是使用包含特殊字符的双引号标签的示例:
JSON.SET key:1 $ '{"email": "test@redis.com"}'
FT.CREATE idx ON JSON PREFIX 1 key: SCHEMA $.email AS email TAG
FT.SEARCH idx '@email:{"test@redis.com"}' DIALECT 2
全文字段
有关全文查询的详细说明,请参阅全文查询文档。您还可以在文本字段中查询短语的精确匹配:
FT.SEARCH index "@field:\"phrase\""
下面是查找所有描述中包含精确文本“崎岖地形”的自行车的示例:
FT.SEARCH idx:bicycle "@description:\"rough terrain\""