最近ytkah在作一个ThinkPHP的项目时发现了一个问题,搜索的功能只能检索出以*为开头的内容,不能检索出中间的词。例如:搜索包含6775的产品,搜索结果为空,而搜索000-6775 就有两个结果。其实就是但愿ThinkPHP能支持模糊搜索,若是你对tp比较熟悉的话很快能够定位到具体的文件,好比/app/product/model/product.php,找到以下代码php
if('' != $keyword) { $where['part'] = ['LIKE', $keyword.'%']; }
修改为html
if('' != $keyword) { $where['part'] = ['LIKE', '%'.$keyword.'%']; }
注意,可能有好几个地方,就是将$keyword.'%'改成'%'.$keyword.'%',这样数据库压力可能会加大,原本只要匹配以abc为开头,如今要匹配全部,查询次数一下增长好几倍甚至几十倍,若是数据量小还能够,百万级别以上的数据压力就很大了,全部要作好权衡,有能力的话能够考虑用electric search来替代原来的站内搜索,或者其余解决方案。linux
可能有朋友会说不知道搜索函数定义在哪一个文件里,能够全盘搜索$keyword,固然你须要一点服务器的操做知识,ytkah已经为你整理好了linux经常使用命令大全数据库