2016-04-15 126 views
1

我需要搜索產品和相關排序,對於這個我試過MySQL查詢MySQL的全文搜索帶通配符

SELECT *, MATCH(`SubProductName`) AGAINST ('+app*' IN BOOLEAN MODE) AS 
relevance FROM `tblsubproducts1` WHERE MATCH(SubProductName) AGAINST 
('+app*' IN BOOLEAN MODE) ORDER BY relevance DESC 

該查詢例如返回:蘋果迅雷,蘋果電視...作爲結果。哪個是對的。

但是,當我與'+usb*'嘗試不返回任何行,而該數據庫包含SubProductNameUSB-C Charge Cable一排,我可以通過對'+cable*'

爲了澄清匹配找到,我想搜索與部分工作像'app'這樣的蘋果這就是爲什麼我加了*的原因,但爲什麼它似乎並不總能奏效,這讓我感到困惑。是-還是USB-C或...?

回答

1

如果你正在使用MyISAM數據,則全文索引的最小單詞長度爲4(這是記錄here

換句話說,「USB」甚至沒有在索引中。您需要更改此參數並重新構建索引。

+0

那無關緊要的搜索字符串是什麼?它只與索引有關嗎? – vlatkozelka

+0

換句話說,因爲它適用於蘋果的「應用程序」,問題在於「usb」不是索引而不是搜索字符串是usb? – vlatkozelka

+0

@vlatkozelka。 。 。它與'USB-C'不匹配,因爲連字符被視爲字定界符。 –