RediSearch高性能全文搜索引擎-整合WordPress打造高质量搜索

文章目录

Redisearch在Redis上面实现了一个搜索引擎,但与其他Redis搜索库不同,它不使用内部数据结构,如排序集。数据存储在内存中,使用内存-有效的自定义数据结构,强大的自动提示引擎,支持多种使用UTF-8编码的语言,支持已经在Redis中存在的HASH对象作为文件的索引。

RediSearch也可以整合到Wordpress,替换Wordpress默认的搜索引擎,而且支持搜索词提示、自动纠错、同义词等,它可以让我们的搜索更快更强大。RediSearch可以安装在本机VPS上,与Wordpress同属一个服务器,索引速度快,且当文章更新后会自动更新索引。

RediSearch高性能全文搜索引擎-整合Wordpress打造即时高质量搜索

这篇文章就来分享一下如何将RediSearch整合到Wordpress,替换Wordpress默认的搜索功能。更多的关于Wordpress优化的文章,这里有(参考:我正在用的WordPress插件):

  1. 网站启用WebP格式图片-PHP和Nginx转化WebP格式和自适应浏览器
  2. WordPress文章目录侧边固定滚动-Easy
    Table 和LuckyWP Table插件
  3. WordPress子主题创建与使用方法-防止修改过的CSS,JS和代码失效

PS:2019年12月2日更新,WordPress插件用的多的话容易出现各种冲突与问题,检测的方式有: WordPress错误诊断模式-专治WP页面空白,服务器500错误,插件冲突 。

PS:2020年3月19日更新,WordPress是一个非常好的建站工具,不仅可以用来写博客,还可以当成CMS内容建站,采集插件也是非常好用: WordPress胖鼠采集插件教程-WP自动采集和发布微信公众号,简书,知乎等任意网站 。

一、RediSearch安装配置

网站:

  1. 官网:https://oss.redislabs.com/redisearch/
  2. 插件: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编辑路径

二、RediSearch插件使用

2.1 配置服务器

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

RediSearch配置服务器

2.2 索引内容设置

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

RediSearch索引内容

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

RediSearch同步更新

索引添加完成。

RediSearch索引完成

2.3 实时搜索

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

RediSearch实时搜索

2.4 同义词设置

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

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搜索时关键是配置好RediSearch服务器,由于服务器重启后Redis就会消失,建议在RediSearch插件后台勾选Write
redis data to the disk,这样重启后不用重新索引了。

全部为采集文章,文中的 联系方式 均不是 本人 的!

发表评论