This post was published in 2020-12-29. Obviously, expired content is less useful to users if it has already pasted its expiration date.
虽然Relevanssi对中文的支持没有英文好,但还是能就中文索引进行一些基本设置的:
进行完这些设置以后,中文搜索也变得勉强能用了。但值得注意的是,Wordpress的性能会在某些方面受到影响。
Table of Contents
SQL
如果编辑一篇中文Post,每保存一次,Relevanssi都会执行至少1次这样的SQL语句,包含DELETE和INSERT:
如果保存的文章是长篇中文文章,这两句SQL执行所消耗的时间会非常长,稳定排在 performance_schema.events_statements_history_long SQL语句耗时排名的前2名,且远超第3名。第3名一般来说是一句操作wp_posts的SQL语句,比如:
SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_parent = 1 AND wp_posts.post_type = 'revision' AND ((wp_posts.post_status = 'inherit')) ORDER BY wp_posts.post_date DESC, wp_posts.ID DESC
绝大多数wordpress database clean相关的插件都会从这里入手,通过删除post revisions来清理wp_posts表,进而提升性能。
而Relevanssi要比这些post revisions夸张得多。以这篇文章为例,在我的服务器里进行测试:
每保存一次,Relevanssi的SQL语句都要耗费约0.45秒,而wp_posts相关的文章更新SQL语句一般只需要0.025秒。(0.025已经很慢了,因为我从不清理posts revisions,wp_posts表很臃肿)
如果要一定要关闭Relevanssi-relevanssi_insert_edit:
但事实上这么做也不是很有必要,因为SQL执行的时间可能远不如wp rest api的响应时间长。
Relevanssi PHP
既然Relevanssi的索引是每次保存实时创建的,那么自然可以推断,执行Relevanssi的php script也占据了较多的系统资源。
事实也确实如此。根据New Relic监测的数据,在编辑、保存文章的时候,Relevanssi插件耗费的时间稳定排在所有插件的第1名。