2011-03-27 35 views
3

爲了將問題短語搜索,MySQL的文檔上寫着:MySQL的使用匹配反對票與不敏感的情況下

在比賽上引用的字符串/在第 是大小寫敏感的...

我DATAS :

INSERT INTO table.col VALUES ('this is a custom phrase to match'); 

我的查詢:

SELECT * FROM table 
WHERE MATCH (col1,..,col10) AGAINST ('"Custom Phrase"' IN BOOLEAN MODE) 

由於大小寫不匹配。


我正在尋找一種方式來使用此查詢在不區分大小寫的方式

一些地方這些短語將所有的數據相匹配:

  • 「自定義短語」
  • 「Custom Phrase」
  • 「CUSTOM PHRASE」
  • 「CuStOm PhRAsE」

任何幫助是值得歡迎的,謝謝你提前^^

回答

2

閱讀本月底(http://bugs.mysql.com/bug.php?id=22343),它說,這是因爲你已經混合了不同的列類型。

如果您必須跨列進行搜索,請將它們全部(包括在轉換過程中指定歸類)轉換爲MATCH左側的文本類型。

1

MySQL Reference指出默認情況下使用latin1非二進制排序規則是不區分大小寫的。看起來你也可以使用分頁功能強制進行特定設置(不區分大小寫或區分大小寫)。

1

thanx您的幫助

因爲我面臨了一臺不能包含超過16列(而我需要33列匹配)全文索引另一個問題,我決定用另一種方式:

(當談到關於全文搜索出現了很多的解決方案)

  1. 我串接在一個字符串的一個行的所有列,這是我轉換爲小寫。

  2. 我將這個字符串保存在一個新添加的列(類型爲longtext,帶有全文索引),專門用於此FT搜索並在每次插入/更新查詢後更新。

  3. 現在我需要在使用布爾模式時將小寫字母傳遞給AGAINST子句。如果所有數據都是小寫,區分大小寫的搜索不再是一個問題。

    SELECT * FROM表WHERE MATCH(longtextcol) AGAINST( ' 「小寫詞組」 lowercaseword1 lowercaseword2')

感謝您的答覆^^

+0

尼斯小費! :)在這裏做同樣的事情。不知道那個醜陋的錯誤。我正在使用UTF-8!謝謝 :) – 2012-04-27 16:32:15