1.概述

Redisearch 在 Redis 之上实现了二级索引,但与其他 Redis 索引库不同,它不使用排序集等内部数据结构。
这还支持更高级的功能,例如多字段查询、聚合和全文搜索功能。这些功能包括精确的短语匹配和文本查询的数字过滤,这是传统 Redis 索引方法不可能或有效的。

2.安装

2.1使用 Docker 运行

docker run -p 6379:6379 redislabs/redisearch:latest #此处可以自己配置启动映射目录,这个方式非常简单这里不过多描述了

2.2下载二进制文件编译运行

Redisearch 是用c语言进行编写的,所以我门需要编译它生成依赖模块redisearch.so文件。首先我们应该获取源码,使用以下git命令进行获取

git clone --recursive https://github.com/RediSearch/RediSearch.git
cd RediSearch #进入目录

redis 实现全文搜索 java redis search_so文件

安装cmake工具进行编译,命令如下:

sudo make setup #linux
make setup #mac

构建RediSearch并运行,命令如下:

make build #构建编译,是根据原文件下面的MakeFile进行构建的
make run #使用 RediSearch 运行 Redis

编译完成,源码里面内迁了redis其他应用,故可以直接使用。如下图所示:

redis 实现全文搜索 java redis search_java_02

这里可以使用redis-cli工具进行连接RediSearch使用。

创建具有字段和权重的索引:

127.0.0.1:6379> FT.CREATE myIdx ON HASH PREFIX 1 doc: SCHEMA title TEXT WEIGHT 5.0 body TEXT url TEXT
OK

将文档添加到索引:

127.0.0.1:6379> hset doc:1 title "hello world" body "lorem ipsum" url "http://redis.io" 
(integer) 3

搜索索引 :

127.0.0.1:6379> FT.SEARCH myIdx "hello world" LIMIT 0 10
1) (integer) 1
2) "doc:1"
3) 1) "title"
   2) "hello world"
   3) "body"
   4) "lorem ipsum"
   5) "url"
   6) "http://redis.io"

删除索引:

127.0.0.1:6379> FT.DROPINDEX myIdx 
OK

添加和获取自动完成索引创建:

127.0.0.1:6379> FT.SUGADD autocomplete "hello world" 100
OK

127.0.0.1:6379> FT.SUGGET autocomplete "he"
1) "hello world"

测试结果如下:

redis 实现全文搜索 java redis search_数据库_03

2.3 引入so文件进行启动

我们编译完成以后在RediSearch目录下会生成一个bin文件目录。我们可以在此目录下去找rediseach.so文件。

cd bin #进入编译后的目录
cd linux-x64-release #进入编译发布版目录
cd search #search目录你就可以看到redisearch.so文件了

操作如下图所示:

redis 实现全文搜索 java redis search_java_04

将redisearch.so文件迁移之redis模块目录下进行启动,没有目录可以自建,笔者此电脑Redis-server是在/usr/local/redis/bin目录存储,故笔者的演示是在此目录进行建module目录,命令分别是

mkdir modeule #前提是进入/usr/local/redis/bin目录,每个人计算机redis按照目录不一样,所以按照自己的实际情况进行配置
mv redisearch.so  ./module/
mv librejson.so  ./module/#我编译后的redisjons文件
redis-server --loadmodule /module/redisearch.so ##启动redis加载对应rediserache.so文件

操作如下图所示:

redis 实现全文搜索 java redis search_redis_05


至此我的RediSeache安装编译教程完毕,恭喜你成功。后面我出不同编成语言的实例,谢谢大家查看