2014-02-10 84 views
16

我要搜索像下面的查詢,但它不能在MySQL中MySQL的部分單詞搜索

SELECT * FROM products WHERE MATCH (title,description) 
AGAINST ('test' IN BOOLEAN MODE); 

工作,我想下面的輸出

testproduct,producttest

任何人可以幫助我在這.. ..?

回答

31

目前,僅支持前綴,不支持後綴:

SELECT * FROM products WHERE MATCH (title,description) 
AGAINST ('test*' IN BOOLEAN MODE); 

http://dev.mysql.com/doc/refman/4.1/en/fulltext-boolean.html

順便提一下,MySQL的全文搜索將成爲瓶頸時,該網站要求大,它是脆弱和不穩定對於一些特殊的搜索詞,因此往往會導致查詢速度慢和數據庫崩潰。儘快使用彈性搜索。

+2

如果反對意見不是單個單詞而是短語(某些單詞或單詞的一部分)? – 23W

+0

在處理大量搜索請求(如電子商務Web應用程序)時這是事實,您應該真正關注ElasticSearch或Redis以獲得更好的性能搜索 –

-6

使用LOCATE來代替......或者更好,使用Lucene並忘記MySQL進行搜索。

+1

MySQL用於搜索的問題有哪些?我發現它非常好,我有數億條記錄。我有一種感覺,大多數人不太瞭解MySQL,因此也不瞭解問題。 – transilvlad