2012-10-29 83 views
1

我在搜索包含與mysql匹配的斜槓(例如ac/dc)的產品時遇到了一些問題。MySQL與斜線匹配

似乎有一個特定的設置會影響到這一點。在我的Windows'使用默認設置XAMMP每一項偉大工程:

MATCH (content) AGAINST ('+ac/dc*' IN BOOLEAN MODE) 

MATCH (content) AGAINST ("+ac/dc*" IN BOOLEAN MODE) 

MATCH (content) AGAINST ('"+ac/dc*"' IN BOOLEAN MODE) 

MATCH (content) AGAINST ("'+ac/dc*'" IN BOOLEAN MODE) 

MATCH (content) AGAINST ('+ac\/dc*' IN BOOLEAN MODE) 

但是它們都不在我們的生產服務器上運行在Linux系統上(我不知道哪個發行版,但它在plesk下)。

而我的意思是「不工作」。該查詢返回0行。生產服務器的ft_min_word爲2.

+0

只需要很長的一段時間,也許你可以嘗試在linux機器上設置數據庫字符集(例如utf-8,或其他任何東西),就像在windows xampp上一樣。另一個長鏡頭:-)可能是在Linux機器上逃避角色,因此......(''+ ac // dc *''IN ... –

+0

您是否收到任何錯誤? – dan

+0

兩者都有utf-8。我沒有收到任何錯誤,它只是返回0行 – unska

回答

0

這是一個服務器問題,直到今天我仍然不知道如何修復它,我所做的改變了整個系統的工作方式。

我有一個搜索表,我存儲的搜索詞,那裏我刪除斜槓,所以AC/DC成爲ACDC和搜索我修改查詢刪除斜槓再次,所以它試圖匹配ACDC和找到正確的行。

+0

嘗試使用'%LIKE%'查詢(如果您檢測到此特殊字符),我沒有看到任何其他解決方法。 – SuN

0

查看XAMP和生產服務器中的存儲引擎。全文搜索有限制http://dev.mysql.com/doc/refman/5.1/en/fulltext-restrictions.html。此外,表格定義必須匹配全文搜索。

斜槓不是一個特殊字符,雖然雙引號是。因此,+ac/dc*必須給出不同的結果集,例如"+ac/dc*"

除此之外,我能想到的唯一區別將是不同的表格內容。

+0

它們看起來和MyISAM和utf8_swedish_ci完全一樣,由於某些原因本地版本顯示全文索引cardinality = 1,生產服務器表示它爲0.儘管如果與普通搜索詞一起使用,它的工作原理完全相同 – unska