精确匹配查询
执行简单的精确匹配查询
精确匹配查询允许您选择所有字段与特定值匹配的文档。
您可以对多种字段类型使用精确匹配查询。查询语法因类型而异。
本文中的示例使用以下字段的架构
字段名称 | 字段类型 |
---|---|
描述 |
文本 |
条件 |
标签 |
价格 |
数值 |
您可以在 快速入门指南 中找到有关创建索引和加载演示数据的更多详细信息。
数值字段
要在数值字段上执行精确匹配查询,您需要使用相同起始值和结束值构造范围查询
FT.SEARCH index "@field:[value value]"
or
FT.SEARCH index "@field:[value]" DIALECT 2
or
FT.SEARCH index "@field==value" DIALECT 2
如 关于范围查询的文章 中所述,您也可以使用 FILTER
参数
FT.SEARCH index "*" FILTER field start end
以下示例展示了如何查询价格正好为 270 美元的自行车
FT.SEARCH idx:bicycle "@price:[270 270]"
FT.SEARCH idx:bicycle "@price:[270]"
FT.SEARCH idx:bicycle "@price==270"
FT.SEARCH idx:bicycle "*" FILTER price 270 270
标签字段
标签是简短的文本序列,例如,“新的”或“洛杉矶”。
重要
如果您需要查询短文本,请使用标签查询而不是全文查询。标签字段在存储索引条目方面更节省空间,并且通常会导致精确匹配查询的查询复杂度更低。您可以通过以下方式为单个标签构建标签查询
FT.SEARCH index "@field:{tag}"
注意
标签查询中必须使用花括号。此简短示例展示了如何查询新的自行车
FT.SEARCH idx:bicycle "@condition:{new}"
对于包含特殊字符的标签,请使用双引号和 方言 2 进行精确匹配查询。在使用双引号引起来的标签进行查询时,唯一需要转义的字符是双引号字符。以下是如何使用包含特殊字符的双引号引起来的标签的示例
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\""
以下是如何查找所有描述中包含“rough terrain”的自行车示例
FT.SEARCH idx:bicycle "@description:\"rough terrain\""