Relevanssi试用:对中文搜索有问题,附临时解决方法

最近试用了一下Relevanssi,是一个wordpress搜索插件。因为wp搜索一直比较慢,而且相当耗资源。一般小站几下F5就挂了,我想尝试一下有关搜索的插件。找了一下,貌似Relevanssi用户量最多。但是很可惜,试用结果是,Relevanssi对中文搜索是有问题的。

Relevanssi貌似原理是这样的,首先可以在控制台设置索引范围,比如哪个类目,哪个自定义类型需要索引。之后,它把可能的搜索字段做一个翻转的拓展。比如英文search,翻转为hcraes。随后单独建立一个表存索引数据,这两个词都存进去,还可以设置黑名单之类的。首先进行精确查询,如果精确查询查不到数据,再进行模糊查询。

其实这样做本身是没什么问题的,我在实际测试的时候,发现搜索英文完全正常,搜索中文就不好使,让我很疑惑。仔细研究以后,发现它的搜索语句有一些蹊跷。按理来说,模糊搜索直接就是 term LIKE %sea% 对吧,但是它写的是 term LIKE '%sea' OR term LIKE 'sea%'。如果这么查询的话,英文是可以成功匹配到的,但是中文不行。

不清楚为什么Relevanssi采取这种方式查询,可能比较匹配英语吧。如果想解决的话,咱们要改一下插件源码了。

/wp-content/relevanssi/lib/search.php 第665行左右:原语句类似为

$o_term_cond = "(term LIKE '%#term#' OR term LIKE '#term#%') ";

修改为

P.S. 这插件功能不错,还可以记录用户的搜索日志,很强大。

点赞
  1. 海川说道:

    博主您好,我用Relevanssi插件做wordpress站内搜索中文不正常,用了您的方法后,可以正常的检索标题内容了,但文章的正文部分检索不到,比如文章正文有装修二字,文章标题没有装修二字,检索装修的话就无结果返回。但如果正文有英文单词deco的话,检索deco就能搜到文章。不知该如何解决,谢谢。如果您有更好的wordpress站内中文搜索方法请不吝赐教,谢谢。

发表评论

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