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服务,一般来说如果你用的是OneinstackLNMP宝塔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/\xe4\xb8\x80\xe7\x9b\xb4\xe4\xbb\xa5\xe6\x9d\xa5\xef\xbc\x8c\xe6\x88\x91\xe6\x9c\x89\xe4\xb8\x80\xe4\xb8\xaa\xe5\x86\x99\xe2\x80\x9c\xe9\x95\xbf\xe6\x96\x87\xe7\xab\xa0\xe2\x80\x9d\xe7\x9a\x84\xe4\xb9\xa0\xe6\x83\xaf\xe3\x80\x82\xe6\x9c\x80\xe5\xbc\x80\xe5\xa7\x8b\xe7\x9a\x84\xe6\x97\xb6\xe5\x80\x99\xe5\x83\x8f\xe5\x86\x99\xe6\xb6\x88\xe6\x81\xaf\xe4\xb8\x80\xe6\xa0\xb7\xe6\x9d\xa5\xe5\x86\x99\xe5\x8d\x9a\xe5\xae\xa2\xef\xbc\x8c\xe6\x96\x87\xe7\xab\xa0\xe7\xae\x80\xe7\x9f\xad\xef\xbc\x8c\xe4\xbd\x86\xe4\xbe\x9d\xe7\x84\xb6\xe8\xa7\x89\xe5\xbe\x97\xe5\xbe\x88\xe9\x9a\xbe\xe5\x86\x99\xef\xbc\x8c\xe6\x89\xbe\xe4\xb8\x8d\xe5\x88\xb0\xe5\x90\x88\xe9\x80\x82\xe7\x9a\x84\xe8\xaf\xad\xe5\x8f\xa5\xe6\x9d\xa5\xe8\xa1\xa8\xe8\xbe\xbe\xe3\x80\x82\xe5\x90\x8e\xe6\x9d\xa5\xe6\x83\xb3\xe5\x87\xba\xe4\xb8\x80\xe4\xb8\xaa\xe2\x80\x9c\xe6\x87\x92\xe4\xb8\xbb\xe6\x84\x8f\xe2\x80\x9d\xe2\x80\x94\xe2\x80\x94\xe7\xbb\x99\xe6\x96\x87\xe7\xab\xa0\xe6\xb7\xbb\xe5\x8a\xa0\xe5\xa4\xa7\xe9\x87\x8f\xe7\x9a\x84\xe5\x9b\xbe\xe7\x89\x87\xef\xbc\x8c\xe4\xb8\x80\xe6\x9d\xa5\xe5\x8f\xaf\xe4\xbb\xa5\xe5\xa2\x9e\xe5\x8a\xa0\xe6\x96\x87\xe7\xab\xa0\xe5\x86\x85\xe5\xae\xb9\xef\xbc\x8c\xe4\xba\x8c\xe6\x9d\xa5\xe5\x9b\xbe\xe6\x96\x87\xe7\xbb\x93\xe5\x90\x88\xe7\x9a\x84\xe6\x96\x87\xe7\xab\xa0\xe8\xaf\xbb\xe8\xb5\xb7\xe6\x9d\xa5\xe6\x9b\xb4\xe6\x9c\x89\xe4\xb9\x90\xe8\xb6\xa3\xe3\x80\x82"
  2) "ft:meimei/content"
  3) "nm:meimei/menu_order"
  4) "ft:meimei/fixed"
  5) "ft:meimei/15"
  6) "ft:meimei/\xef\xbc\x89"
  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,这样重启后不用重新索引了。

文章出自:挖站否 https://wzfou.com/redisearch/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。部分内容参考自wp-bullet


分享到:
Avatar for Qi
关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。
已有 17 条评论
  1. 刚弄了 好像不行

    2022年11月24日 23:49 回复
    • Avatar for Qi Qi

      中文可能支持不是很好。

      2022年11月27日 09:04 回复
    • Avatar for 乞丐 乞丐

      安装好了 点击 Redisearch 第一个设置项 就跳出
      Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 147456 bytes) in /www/wwwroot/kuayu.com/wp-includes/class-wpdb.php on line 2187
      把内存调大 就404 心累 无解..

      2022年11月30日 23:38来自QQ 回复
  2. Avatar for qitablog qitablog

    大佬,请问现在WordPress搜索什么改进的新方法了吗,我看ecosia挺好的

    2021年12月6日 14:29 回复
    • Avatar for Qi Qi

      好像都是外文的搜索引擎。

      2021年12月6日 20:46 回复
  3. Avatar for 名画 北欧美式装饰画 名画 北欧美式装饰画

    弄好了,搜索不会分词啊,词之间需要加空格才可以,不知道是我哪弄的不对,不加空格什么都搜不到。。。。

    2021年3月11日 12:57来自QQ 回复
  4. Avatar for see see

    然后编辑 redis.conf 文件,添加以下代码,最后重启Redis。
    上面这一步配置完后,在wordpress后面看到的还是这样。不能加载这个模式。
    我用的是宝塔面板这两个位置都有配置文件。/www/server/redis/redis.conf
    /www/server/redisBak/redis.conf
    是否还需要在 etc/redis/ 中创建这个配置文件。
    RediSearch module not loaded! go to settings[泪]

    2020年11月8日 21:13 回复
    • Avatar for Qi Qi

      那就不需要了,宝塔不是有自动安装Redis的吗?直接在商店里搜索自动安装和配置,因为宝塔是快速编译的,所以手动安装Redis会出各种问题。

      2020年11月10日 08:53 回复
  5. 对中文支持是否友好?

    2019年12月4日 17:39 回复
    • Avatar for Qi Qi

      不是很好。

      2019年12月5日 10:27 回复
  6. 挖站否mm).( ←2017我的腰

    ( . )→2019我的腰

    2019年11月30日 13:35来自移动端 回复
  7. 坐等中文起来

    2019年11月29日 08:08 回复
    • Avatar for Qi Qi

      中文还没有。

      2019年11月29日 11:01 回复
  8. Avatar for jeray jeray

    语言不是问题 性能是问题

    2019年11月29日 05:47 回复
  9. 中文支持不是很好就不折腾了。虽然一直想找一个搜索增强的方法。

    2019年11月29日 02:05 回复
  10. Avatar for 浮游 浮游

    已经转为静态博客了,本地拿wordpress试试

    2019年11月28日 23:53 回复

Login

Welcome! Login in to your account

Remember me Lost your password?

Don't have account. Register

Lost Password

Register