中文站使用数据库全文索引提升WordPress内置搜索功能(替换like语句)性能

应客户需求优化WordPres内置搜索功能的性能,客户网站使用了大量搜索页面作为展示,当访问高峰期时产生大量的慢查询,导致网站访问缓慢出现大量502错误。网站为交互类站点,几乎排除了缓存插件的使用;

既然是慢查询那么我们就从数据库和查询语句着手处理,客户的要求是搜索的时候必须匹配标题和内容。所以网上大量的只搜索标题的方法无效。

解决思路:使用Mysql5.7+版本的全文索引+中文分词功能(这里注意:需要5.76+的Mysql数据库版本,才支持中文分词),建立索引后,优化WordPress搜索查询语句;

第一步:安装Mysql5.7+版本,我们这里直接安装了Mysql8.0版本,并添加如下配置到my.ini。

添加完成后重启数据库。

第二步:导入数据库,并设置索引。

建议全文索引并指定使用ngram作为中文分词引擎;示例语句如下:

如果之前就设置了标题和内容的全文索引需要删除重建,以指定分词引擎。

Ps: 如果数据库体量较大建立索引需要一点时间

第三步:优化WordPress搜索Sql语句,使用match([col]) against([key])替换原有like语句方案使用。

将以下代码添加到主题functions.php内

PS: 注意match后面的字段名需要和建立索引时的字段对应上,否则无法使用索引。

 

更多阅读资料:http://www.chenqiong.net/article/26

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

1 4 =