有没有用EyouCMS做站的朋友碰到过这糟心情况?用户搜个产品关键词,出来的全是八竿子打不着的新闻,甚至几年前的过期内容都排在前面,访客点进来扭头就走,转化率直接掉一半?我前阵子帮客户改企业站就踩了这个坑,熬了两个通宵摸出了所有对应的修复方法,今天全撂给你们。
说白了EyouCMS默认的搜索逻辑是真的偷懒,它默认是按发布时间排序的,根本没算关键词匹配度,而且如果后台开了全站搜索,连单页、留言板的内容都给你塞结果里,不乱才怪。还有人装了自定义字段插件之后,搜自定义字段里的内容直接匹配不到,或者出来重复结果,都是默认逻辑没覆盖到这些场景。
先去后台找【核心设置】-【搜索设置】,找到搜索结果排序规则这一栏,别选默认的“发布时间倒序”,改成“按匹配度排序”,要是怕新内容没权重,就选“匹配度+发布时间倒序”的组合规则,改完先清缓存测一遍,80%的普通站点这一步就搞定了。哦对了,要是你站点内容少于1000条,直接把全文搜索开关打开,匹配精度直接上一个台阶,内容多的话别开,会卡服务器。
这个是很多二次开发的朋友容易踩的坑,EyouCMS默认搜索只搜title、keywords、description还有正文内容,你自己加的产品型号、规格这些自定义字段根本没进搜索索引。改的话要动一点点代码,找文件/application/home/model/Search.php,找到查询条件的那一段,把你要加的自定义字段名加进去就行,给你们写个示例:
``` // 原查询条件 $where['title|keywords|description|content'] = ['like', "%{$keyword}%"]; // 改成加自定义字段的,比如我加了product_spec、product_model两个字段 $where['title|keywords|description|content|product_spec|product_model'] = ['like', "%{$keyword}%"]; ```
哦对了,结果重复的话,直接在查询语句最后加个group by aid就行,把重复的文章ID合并掉,就不会出现同一条内容出好几次的情况了。
很多人搜出来留言板、友情链接的单页内容,就是没设置屏蔽。直接去后台【栏目管理】,找到你不想进搜索的栏目,点编辑,拉到最下面的高级设置,把“允许搜索”的勾选给去掉,保存之后清缓存,这些栏目的内容再也不会出现在搜索结果里了。单页内容的话同理,去单页管理里找对应的页面,关了允许搜索就行。
别改完就不管了,至少要测三个场景:第一搜热门关键词,看前10条结果是不是都和关键词相关,排序是不是新内容优先;第二搜冷门的长尾词,看能不能匹配到对应的内容;第三搜自定义字段里的内容,比如产品型号,看能不能精准出来对应的产品。要是还不对,就去清下redis缓存或者服务器的静态缓存,很多时候都是缓存没清干净导致的假问题。
这事儿吧,真的是EyouCMS官方不想优化的小bug,毕竟开源版本免费给你用,也不可能适配所有场景,自己动手改个十分钟就能搞定,总比看着访客流失强对吧?要是还有啥奇奇怪怪的搜索问题,评论区留个言我帮你瞅。
上一篇: 服务器端口异常修复:资深运维分享快速排障完整实操方法
下一篇: 【服务器定时重启服务】
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图