为了介绍这个问题,mysql doc读取:
引用Match / Against子句中的字符串 区分大小写...
我的数据:
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)
因为大小写而不匹配。
我正在寻找一种在INsensitive方式
的情况下使用此查询的方法这些短语将与数据匹配的东西:
欢迎任何帮助,提前谢谢^^
答案 0 :(得分:2)
阅读本文的结尾(http://bugs.mysql.com/bug.php?id=22343),其中说这是按设计的,因为您混合了不同的列类型。
如果您必须搜索列,请将它们全部转换(包括在转换期间指定排序规则)到MATCH左侧的文本类型。
答案 1 :(得分:1)
MySQL Reference表示默认情况下使用latin1非二进制排序规则不区分大小写。看起来您也可以使用collate函数强制执行特定设置(不区分大小写或区分大小写)。
答案 2 :(得分:1)
Thanx求助
由于我面临另一个问题,全文索引不能超过16列(我需要匹配33列)我决定采用另一种方式:
(一种在全文搜索方面出现的解决方案)
我连接字符串中一行的所有列,我将其转换为小写。
我将此字符串保存在新添加的列(类型为longtext,其上带有全文索引)列中,该列专用于此FT搜索并在每次插入/更新查询后更新。
现在我需要将小写术语传递给AGAINST子句,同时使用BOOLEAN MODE。将所有数据设置为小写,区分大小写的搜索不再是问题。
SELECT * FROM table WHERE MATCH(longtextcol) AGAINST('“小写短语”lowercaseword1 lowercaseword2')
感谢您的回复^^