文章目录
Redisearch在Redis上面实现了一个搜索引擎,但与其他Redis搜索库不同,它不使用内部数据结构,如排序集。数据存储在内存中,使用内存-有效的自定义数据结构,强大的自动提示引擎,支持多种使用UTF-8编码的语言,支持已经在Redis中存在的HASH对象作为文件的索引。
RediSearch也可以整合到Wordpress,替换Wordpress默认的搜索引擎,而且支持搜索词提示、自动纠错、同义词等,它可以让我们的搜索更快更强大。RediSearch可以安装在本机VPS上,与Wordpress同属一个服务器,索引速度快,且当文章更新后会自动更新索引。

这篇文章就来分享一下如何将RediSearch整合到Wordpress,替换Wordpress默认的搜索功能。更多的关于Wordpress优化的文章,这里有(参考:我正在用的WordPress插件):
- 网站启用WebP格式图片-PHP和Nginx转化WebP格式和自适应浏览器
-
WordPress文章目录侧边固定滚动-Easy
Table 和LuckyWP Table插件 - WordPress子主题创建与使用方法-防止修改过的CSS,JS和代码失效
PS:2019年12月2日更新,WordPress插件用的多的话容易出现各种冲突与问题,检测的方式有: WordPress错误诊断模式-专治WP页面空白,服务器500错误,插件冲突 。
PS:2020年3月19日更新,WordPress是一个非常好的建站工具,不仅可以用来写博客,还可以当成CMS内容建站,采集插件也是非常好用: WordPress胖鼠采集插件教程-WP自动采集和发布微信公众号,简书,知乎等任意网站 。
一、RediSearch安装配置
网站:
- 官网:https://oss.redislabs.com/redisearch/
- 插件:https://wordpress.org/plugins/redisearch/
先确保你的服务器上已经启用了Redis服务,一般来说如果你用的是Oneinstack、LNMP和宝塔BT面板,可以一键安装Redis服务。然后,使用以下命令安装RediSearch:
apt update apt install cmake build-essential git -y cd /tmp git clone https://github.com/RedisLabsModules/RediSearch.git cd RediSearch/cmake cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo #看到如下输出表示成功 root@150-95-177-167:~# cd /tmp root@150-95-177-167:/tmp# git clone https://github.com/RedisLabsModules/RediSearch.git Cloning into 'RediSearch'... remote: Enumerating objects: 178, done. remote: Counting objects: 100% (178/178), done. remote: Compressing objects: 100% (122/122), done. remote: Total 23273 (delta 91), reused 100 (delta 54), pack-reused 23095 Receiving objects: 100% (23273/23273), 16.46 MiB | 7.09 MiB/s, done. Resolving deltas: 100% (16751/16751), done. root@150-95-177-167:/tmp# cd RediSearch/cmake root@150-95-177-167:/tmp/RediSearch/cmake# cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -- The C compiler identification is GNU 6.3.0 -- The CXX compiler identification is GNU 6.3.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Performing Test HAVE_W_INCOMPATIBLE_POINTER_TYPES -- Performing Test HAVE_W_INCOMPATIBLE_POINTER_TYPES - Success -- Performing Test HAVE_W_DISCARDS_QUALIFIERS -- Performing Test HAVE_W_DISCARDS_QUALIFIERS - Failed v1.6.0-251-g5baf48bd CMake Warning (dev) at CMakeLists.txt:127 (GET_TARGET_PROPERTY): Policy CMP0045 is not set: Error on non-existent target in get_target_property. Run "cmake --help-policy CMP0045" for policy details. Use the cmake_policy command to set the policy and suppress this warning. get_target_property() called with non-existent target "example_extension". This warning is for project developers. Use -Wno-dev to suppress it. -- Configuring done -- Generating done -- Build files have been written to: /tmp/RediSearch/cmake #开始编译 make
编译完成后,执行以下命令将 redisearch.so
放入目录下:
mkdir -p /etc/redis/modules cp /tmp/RediSearch/cmake/redisearch.so /etc/redis/modules/redisearch.so
然后编辑 redis.conf
文件,添加以下代码,最后重启Redis。
loadmodule /etc/redis/modules/redisearch.so #重启 sudo service redis-server restart
redis.conf
文件常用的路径是/etc/redis/redis.conf
,也有在其它地方的,例如Oneinstack的路径如下:

二、RediSearch插件使用
2.1 配置服务器
到WordPress官网下载RediSearch插件,启用后首先在Redis服务器配置填写你的Redis服务器地址、端口以及索引名称。(点击放大)

2.2 索引内容设置
完成后,点击索引选项,在这里你可以设置分类、标签、文章、页面等是否列入到索引当中。(点击放大)

回到插件页面,你可以看到RediSearch提示需要更新一下索引,点击同步更新。

索引添加完成。

2.3 实时搜索
RediSearch支持添加实时搜索,即当用户输入关键词时会有提示。

2.4 同义词设置
RediSearch的同义词设置允许你添加相关的词语用于提高搜索质量。

三、RediSearch搜索效果
3.1 索引是否成功
通过以下命令你可以检测RediSearch索引是否成功。
root@150-95-177-167: redis-cli #进入Redis server 127.0.0.1:6379> MODULE list #检查 modules 是否成功加载 1) 1) "name" 2) "ft" 3) "ver" 4) (integer) 999999 127.0.0.1:6379> INFO keyspace #查看数据库 # Keyspace db0:keys=135,expires=0,avg_ttl=0 127.0.0.1:6379> SELECT 0 #选择0数据库 OK 127.0.0.1:6379> KEYS * #列出所有的Key 1) "ft:meimei/xe4xb8x80xe7x9bxb4xe4xbbxa5xe6x9dxa5xefxbcx8cxe6x88x91xe6x9cx89xe4xb8x80xe4xb8xaaxe5x86x99xe2x80x9cxe9x95xbfxe6x96x87xe7xabxa0xe2x80x9dxe7x9ax84xe4xb9xa0xe6x83xafxe3x80x82xe6x9cx80xe5xbcx80xe5xa7x8bxe7x9ax84xe6x97xb6xe5x80x99xe5x83x8fxe5x86x99xe6xb6x88xe6x81xafxe4xb8x80xe6xa0xb7xe6x9dxa5xe5x86x99xe5x8dx9axe5xaexa2xefxbcx8cxe6x96x87xe7xabxa0xe7xaex80xe7x9fxadxefxbcx8cxe4xbdx86xe4xbex9dxe7x84xb6xe8xa7x89xe5xbex97xe5xbex88xe9x9axbexe5x86x99xefxbcx8cxe6x89xbexe4xb8x8dxe5x88xb0xe5x90x88xe9x80x82xe7x9ax84xe8xafxadxe5x8fxa5xe6x9dxa5xe8xa1xa8xe8xbexbexe3x80x82xe5x90x8exe6x9dxa5xe6x83xb3xe5x87xbaxe4xb8x80xe4xb8xaaxe2x80x9cxe6x87x92xe4xb8xbbxe6x84x8fxe2x80x9dxe2x80x94xe2x80x94xe7xbbx99xe6x96x87xe7xabxa0xe6xb7xbbxe5x8axa0xe5xa4xa7xe9x87x8fxe7x9ax84xe5x9bxbexe7x89x87xefxbcx8cxe4xb8x80xe6x9dxa5xe5x8fxafxe4xbbxa5xe5xa2x9exe5x8axa0xe6x96x87xe7xabxa0xe5x86x85xe5xaexb9xefxbcx8cxe4xbax8cxe6x9dxa5xe5x9bxbexe6x96x87xe7xbbx93xe5x90x88xe7x9ax84xe6x96x87xe7xabxa0xe8xafxbbxe8xb5xb7xe6x9dxa5xe6x9bxb4xe6x9cx89xe4xb9x90xe8xb6xa3xe3x80x82" 2) "ft:meimei/content" 3) "nm:meimei/menu_order" 4) "ft:meimei/fixed" 5) "ft:meimei/15" 6) "ft:meimei/xefxbcx89" 7) "ft:meimei/mp4" 127.0.0.1:6379> exit #退出
3.2 实时搜索效果
启用了RediSearch后,Wordpress搜索的结果会自动展示来自RediSearch索引的结果,同时也支持词语联想,即实时搜索建议,如下图:

四、总结
RediSearch官方宣称对中文搜索已经有了改进,实际测试过程中发现RediSearch对中文搜索不是很友好,但是英文搜索这一块确实非常给力,不仅速度快,而且结果也很准确。
使用RediSearch搜索时关键是配置好RediSearch服务器,由于服务器重启后Redis就会消失,建议在RediSearch插件后台勾选Write
redis data to the disk,这样重启后不用重新索引了。