# 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

支持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

# 6.删除索引

FT.DROPINDEX myIdx
1

# 7.参考资料

官方命令 (opens new window)