4.查询数据
数据库包含一些电影和索引,现在可以执行一些查询。
#
查询例子:所有包含字符串的电影战争
"
FT.SEARCH命令返回一个结果列表,首先是结果数,然后是元素列表(键和字段)。
正如你所看到的电影《星球大战5:帝国反击战》,即使你只使用了单词“war”来匹配标题中的“Wars”。这是因为标题已经被索引为文本,所以字段是标记化的和是.
稍后在更详细地查看查询语法时,您将了解有关搜索功能的更多信息。
还可以使用回来
参数,让我们运行相同的查询,并只返回title和release_year:
这个查询没有指定任何“字段”,仍然返回一些电影,这是因为RediSearch将在默认情况下搜索所有TEXT字段。在当前索引中,只有标题作为TEXT字段显示。稍后您将看到如何更新索引,向其添加更多字段。
如果需要对特定字段执行查询,可以使用@field:
语法,例如:
例子:所有包含字符串的电影战争
但不是绝地武士
一个“
添加字符串-绝地武士
(minus)将要求查询引擎不要返回包含绝地武士
.
例子:所有包含字符串的电影gdfather
使用模糊搜索”
正如您所看到的,单词教父包含一个speelling错误,但是可以使用模糊匹配.模糊匹配是基于Levenshtein距离(LD)。
例子:所有惊悚片
电影”
这个体裁
字段被索引为TAG,并允许精确匹配查询。
查询标记字段的语法是@field_name:{value}
例子:所有惊悚片
或行动
电影”
您可以在中找到有关标记过滤器的更多信息的文档.
例子:所有惊悚片
或行动
没有的电影绝地武士
标题中“
例子:所有在1970年至1980年间上映的电影(包括在内)
FT.SEARCH语法有两种查询数字字段的方法:
- 使用
滤器
参数
或
- 使用
@field
在查询字符串中。
要排除某个值,请在其前面加上(
在筛选器或查询字符串中,例如要排除:
#
插入、更新、删除和过期文档作为本教程的一部分,你有:
- 创建了一些电影,如Redis哈希(我们称之为文件)使用以下键模式
电影:*
- 属性创建索引
创建
命令 - 使用
FT.SEARCH
在创建索引时,使用idx:movie ON hash PREFIX 1 "movie:"
参数时,您将要求索引引擎查看所有现有键并为它们建立索引。
此外,匹配此模式/类型的新信息也将被索引。
让我们数一下电影的数量,添加一个新的,然后再数一遍:
这部新电影已编入索引。你也可以搜索任何索引字段:
现在你使现代化其中一个字段,并搜索007
当你删除当键过期(TTL-Time To Live)时,也会更新索引。
例如,设置詹姆斯·邦德电影在20秒内过期:
您可以运行以下查询,您将看到文档在20秒后过期,搜索查询不会返回任何结果,显示索引已更新。
注意:当您使用Redis作为主数据库时,不一定使用TTLs来删除记录。但是,如果您存储和索引的数据是暂时的,例如另一个数据存储或Web服务顶部的缓存层,则查询用户会话内容。。。这通常被限定为“一个”短暂的搜索用例:轻量级、快速和过期。
#
更多的您可以在文档中找到许多有关索引和搜索的附加功能:
让我们看看如何检查、修改和删除索引。