各位請(qǐng)問(wèn)我如何匹配以下關(guān)鍵詞
如數(shù)據(jù)庫(kù)種存儲(chǔ)字符為:sfsdf4-1bbsdfsd;
用戶輸入41bb、4 1bb,也能匹配到此字符串
這該如何去做?
謝謝
新建一個(gè)字段,存儲(chǔ)去掉需要忽略的特殊字符后的字符串,比如 : sfsdf41bbsdfsd,查詢的時(shí)候,也對(duì)關(guān)鍵字進(jìn)行同樣的操作,用新的字段去匹配
MySQL 支持正則表達(dá)式搜索,例如
SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
我覺(jué)得應(yīng)該先處理用戶提交的數(shù)據(jù),以空格分割線分割用戶提交的數(shù)據(jù),組成一個(gè)數(shù)組,然后用這個(gè)數(shù)組中的數(shù)據(jù)進(jìn)行模糊查詢,之后取出相同的數(shù)據(jù)。。。但是在大量用戶以此種方式查詢的情況下,我認(rèn)為你的系統(tǒng)會(huì)被拖得很慢很慢,所以不建議用這種設(shè)計(jì)模式
題主的問(wèn)題設(shè)置到分詞搜索了,直接進(jìn)行模糊搜索匹配不到的,使用正則表達(dá)式搜索的話效率太差,不推薦,而且場(chǎng)景太多了,自己開(kāi)發(fā)實(shí)現(xiàn)的話,很難全部都考慮到.
推薦使用一個(gè)搜索引擎吧,sphinx就很好用,對(duì)mysql的支持也很好.
題主有php標(biāo)簽,如果常用php開(kāi)發(fā)的話,用迅搜也很好,http://www.xunsearch.com/ 國(guó)人開(kāi)發(fā)的,全中文的文檔,用起來(lái)也很方便.