如何讓ThinkPHP支持模糊搜索

  最近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經常使用命令大全數據庫

相關文章
相關標籤/搜索