Redisearch在Redis上面实现了一个搜索引擎,但与其他Redis搜索库不同,它不使用内部数据结构,如排序集。数据存储在内存中,使用内存-有效的自定义数据结构,强大的自动提示引擎,支持多种使用UTF-8编码的语言,支持已经在Redis中存在的HASH对象作为文件的索引。
RediSearch也可以整合到Wordpress,替换Wordpress默认的搜索引擎,而且支持搜索词提示、自动纠错、同义词等,它可以让我们的搜索更快更强大。RediSearch可以安装在本机VPS上,与Wordpress同属一个服务器,索引速度快,且当文章更新后会自动更新索引。
这篇文章就来分享一下如何将RediSearch整合到Wordpress,替换Wordpress默认的搜索功能。更多的关于Wordpress优化的文章,这里有(参考:我正在用的WordPress插件):
PS:2019年12月2日更新,WordPress插件用的多的话容易出现各种冲突与问题,检测的方式有: WordPress错误诊断模式-专治WP页面空白,服务器500错误,插件冲突 。
PS:2020年3月19日更新,WordPress是一个非常好的建站工具,不仅可以用来写博客,还可以当成CMS内容建站,采集插件也是非常好用: WordPress胖鼠采集插件教程-WP自动采集和发布微信公众号,简书,知乎等任意网站 。
网站:
先确保你的服务器上已经启用了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的同义词设置允许你添加相关的词语用于提高搜索质量。
通过以下命令你可以检测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 #退出
启用了RediSearch后,Wordpress搜索的结果会自动展示来自RediSearch索引的结果,同时也支持词语联想,即实时搜索建议,如下图:
RediSearch官方宣称对中文搜索已经有了改进,实际测试过程中发现RediSearch对中文搜索不是很友好,但是英文搜索这一块确实非常给力,不仅速度快,而且结果也很准确。
使用RediSearch搜索时关键是配置好RediSearch服务器,由于服务器重启后Redis就会消失,建议在RediSearch插件后台勾选Write redis data to the disk,这样重启后不用重新索引了。
文章出自:挖站否 https://wzfou.com/redisearch/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。部分内容参考自wp-bullet。
文章更新于: %s = human-readable time difference 下午8:38
查看评论
刚弄了 好像不行
安装好了 点击 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 心累 无解..
中文可能支持不是很好。
大佬,请问现在WordPress搜索什么改进的新方法了吗,我看ecosia挺好的
好像都是外文的搜索引擎。
弄好了,搜索不会分词啊,词之间需要加空格才可以,不知道是我哪弄的不对,不加空格什么都搜不到。。。。
然后编辑 redis.conf 文件,添加以下代码,最后重启Redis。
上面这一步配置完后,在wordpress后面看到的还是这样。不能加载这个模式。
我用的是宝塔面板这两个位置都有配置文件。/www/server/redis/redis.conf
/www/server/redisBak/redis.conf
是否还需要在 etc/redis/ 中创建这个配置文件。
RediSearch module not loaded! go to settings[泪]
那就不需要了,宝塔不是有自动安装Redis的吗?直接在商店里搜索自动安装和配置,因为宝塔是快速编译的,所以手动安装Redis会出各种问题。
对中文支持是否友好?
不是很好。
挖站否mm).( ←2017我的腰
( . )→2019我的腰
这是怀孕了?[疑问]
坐等中文起来
中文还没有。
语言不是问题 性能是问题
中文支持不是很好就不折腾了。虽然一直想找一个搜索增强的方法。
已经转为静态博客了,本地拿wordpress试试