前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何让ThinkPHP支持模糊搜索

如何让ThinkPHP支持模糊搜索

作者头像
ytkah
发布2019-05-25 18:33:40
7330
发布2019-05-25 18:33:40
举报
文章被收录于专栏:ytkahytkah

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

代码语言:javascript
复制
if('' != $keyword) {
            $where['part'] = ['LIKE', $keyword.'%'];
        }

  修改成

代码语言:javascript
复制
if('' != $keyword) {
            $where['part'] = ['LIKE', '%'.$keyword.'%'];
        }

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档