各位請問我如何搭配以下關鍵字
如資料庫種儲存字元為:sfsdf4-1bbsdfsd;
使用者輸入41bb、4 1bb,也能符合到此字串
這該如何去做? 謝謝
你需要的不是 mysql 模糊搜尋了吧。 需要搜尋引擎的支援。
新建一個字段,儲存去掉需要忽略的特殊字元後的字串,例如 : sfsdf41bbsdfsd,查詢的時候,也對關鍵字進行同樣的操作,用新的字段去匹配
MySQL 支援正規表示式搜索,例如 SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
我覺得應該先處理用戶提交的數據,以空格分割線分割用戶提交的數據,組成一個數組,然後用這個數組中的數據進行模糊查詢,之後取出相同的數據。 。 。但在大量使用者以此方式查詢的情況下,我認為你的系統會被拖得很慢很慢,所以不建議用這種設計模式
題主的問題設定到分詞搜尋了,直接進行模糊搜尋匹配不到的,使用正則表達式搜尋的話效率太差,不推薦,而且場景太多了,自己開發實現的話,很難全部都考慮到.推薦使用一個搜尋引擎吧,sphinx就很好用,對mysql的支援也很好.題主有php標籤,如果常用php開發的話,用迅搜也很好,http://www.xunsearch .com/ 國人開發的,全中文的文檔,用起來也很方便.
用搜尋引擎吧,人家就是專業做這個的
你需要的不是 mysql 模糊搜尋了吧。
需要搜尋引擎的支援。
新建一個字段,儲存去掉需要忽略的特殊字元後的字串,例如 : sfsdf41bbsdfsd,查詢的時候,也對關鍵字進行同樣的操作,用新的字段去匹配
MySQL 支援正規表示式搜索,例如
SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
我覺得應該先處理用戶提交的數據,以空格分割線分割用戶提交的數據,組成一個數組,然後用這個數組中的數據進行模糊查詢,之後取出相同的數據。 。 。但在大量使用者以此方式查詢的情況下,我認為你的系統會被拖得很慢很慢,所以不建議用這種設計模式
題主的問題設定到分詞搜尋了,直接進行模糊搜尋匹配不到的,使用正則表達式搜尋的話效率太差,不推薦,而且場景太多了,自己開發實現的話,很難全部都考慮到.
推薦使用一個搜尋引擎吧,sphinx就很好用,對mysql的支援也很好.
題主有php標籤,如果常用php開發的話,用迅搜也很好,http://www.xunsearch .com/ 國人開發的,全中文的文檔,用起來也很方便.
用搜尋引擎吧,人家就是專業做這個的