码迷,mamicode.com
首页 > Web开发 > 详细

如何让ThinkPHP支持模糊搜索

时间:2019-05-17 18:05:10      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:log   command   and   解决方案   pre   开头   注意   sea   mode   

  最近ytkah在做一个ThinkPHP的项目时发现了一个问题,搜索的功能只能检索出以*为开头的内容,不能检索出中间的词。例如:搜索包含6775的产品,搜索结果为空,而搜索000-6775 就有两个结果。其实就是希望ThinkPHP能支持模糊搜索,如果你对tp比较熟悉的话很快可以定位到具体的文件,比如/app/product/model/product.php,找到如下代码

if(‘‘ != $keyword) {
            $where[‘part‘] = [‘LIKE‘, $keyword.‘%‘];
        }

  修改成

if(‘‘ != $keyword) {
            $where[‘part‘] = [‘LIKE‘, ‘%‘.$keyword.‘%‘];
        }

  注意,可能有好几个地方,就是将$keyword.‘%‘改为‘%‘.$keyword.‘%‘,这样数据库压力可能会加大,本来只要匹配以abc为开头,现在要匹配所有,查询次数一下增加好几倍甚至几十倍,如果数据量小还可以,百万级别以上的数据压力就很大了,所有要做好权衡,有能力的话可以考虑用electric search来替代原来的站内搜索,或者其他解决方案。

  可能有朋友会说不知道搜索函数定义在哪个文件里,可以全盘搜索$keyword,当然你需要一点服务器的操作知识,ytkah已经为你整理好了linux常用命令大全

如何让ThinkPHP支持模糊搜索

标签:log   command   and   解决方案   pre   开头   注意   sea   mode   

原文地址:https://www.cnblogs.com/ytkah/p/10882791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!