# 1.简介
RediSearch是一个高性能的全文搜索引擎,可作为一个Redis Module 运行在Redis上,是由RedisLabs团队开发的。
特点是:Faster, in-memory, highly available full text search
项目地址:https://github.com/RedisLabsModules/RediSearch (opens new window)
官网:http://redisearch.io (opens new window)
客户端:https://oss.redis.com/redisearch/Clients/ (opens new window)
主要特性
RediSearch 是在Redis基础上从0开始开发的一个全文搜索索引,使用新的Redis Modules API来扩展Redis新命令和能力,它的主要特性包括:
- 简单,快速索引和搜索
- 数据存储在内存中,使用内存-有效的自定义数据结构
- 支持多种使用UTF-8编码的语言
- 文档和字段评分
- 结果的数值过滤
- 通过词干扩展查询
- 精确的短语搜索
- 按特定属性过滤结果(例如仅在标题中搜索“foo”)
- 强大的自动提示引擎
- 增量索引(不需要对索引进行优化和压缩)
- 支持用作存储在另一数据库中的文档的搜索索引
- 支持已经在Redis中存在的HASH对象作为文件的索引
- 扩展到多个Redis实例
# 2.安装
docker run -p 6379:6379 --name redisearch redislabs/redisearch:latest
1
# 3.添加索引
FT.CREATE myIdx ON HASH PREFIX 1 doc: SCHEMA title TEXT WEIGHT 5.0 body TEXT url TEXT
1
# 4.添加文档
hset doc:1 title "hello world" body "lorem ipsum" url "http://redis.io"
hset doc:2 title "hello world2" body "lorem ipsum2" url "http://redis.io/2"
hset doc:3 title "hello world3" body "lorem ipsum3" url "http://redis.io/3"
1
2
3
2
3
支持HASH
,JSON.SET
。
# 5.查询
# 查询所有TEXT属性包含hello的文档,10条
FT.SEARCH myIdx "hello" LIMIT 0 10
# 查询title属性包含hello的文档
FT.SEARCH myIdx "@title:hello"
# 查询所有TEXT属性包含hello的文档,并且查询出分数
FT.SEARCH myIdx "hello" WITHSCORES EXPLAINSCORE
# 查询所有TEXT属性包含hello的文档,10条,返回限制title字段
FT.SEARCH myIdx "hello" LIMIT 0 10 RETURN 1 title
# 查询包含hello,不包含world2的文档,返回字段title,url
FT.SEARCH myIdx "hello -world2" return 2 title url
# FILTER numeric_attribute min max
FT.SEARCH myIdx * FILTER release_year 1970 1980 RETURN 2 title release_year
FT.SEARCH myIdx "@release_year:[1970 1980]" RETURN 2 title release_year
# 不包括1980
FT.SEARCH myIdx "@release_year:[1970 (1980]" RETURN 2 title release_year
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 6.删除索引
FT.DROPINDEX myIdx
1