2014-03-03 91 views
0

使用以下查詢來搜索產品數據庫的位置。它用在我們的後端查找要編輯的產品,關注搜索詞和查詢工作正常。MySQL搜索匹配搜索詞中的整數

搜索條件:歐元級

SELECT * FROM product_descriptions WHERE MATCH(product_name) AGAINST('"+euro* +grade*"' IN BOOLEAN MODE) LIMIT 10 

輸出:

product id product_name  price 
1    Euro Grade 20k  200.00 
2    Euro Grade 30k  300.00 
3    Euro Grade 40k  400.00 

但是,如果我們想在它不返回任何結果

搜索的搜索查詢的整數搜索長期:歐元等級40k

SELECT * FROM product_descriptions WHERE MATCH(product_name) AGAINST('"+euro* +grade* +40k*"' IN BOOLEAN MODE) LIMIT 10 
+0

很高興看到您希望返回的一些示例數據。 –

+0

@JonTaylor更新了第一個查詢的輸出:) – mldev

回答

0

問題可能是系統變量ft_min_word_len。此值的默認值爲4(如解釋here),這意味着將忽略1個字符,2個字符和3個字符。你的詞'40k'太短,所以它甚至沒有索引。

您需要更改參數值,然後重新構建索引。

+0

謝謝你,我已經設置了ft_min_word_len = 2; 運行以下查詢SHOW VARIABLES LIKE'ft_min_word_len',它返回2並且也被表格修復。然而,不會得到任何想法的結果? – mldev

0

可能問題在MySQL是由於以下的限制:全文檢索的

默認最小長度是4個字符。所以如果你想搜索少於4個字符的單詞,那麼你可以用變量ft_min_word_len和ft_max_word_len來改變最小和最大字長。