我在MySQL 全文搜索中遇到了区分大小写的问题。
我刚刚学习了全文示例,在MySQL doco at http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html中。我会把它贴在这里以便于参考..。
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
INSERT INTO articles (title,body) VALUES
('MySQL Tutorial','DBMS stands for DataBase ...'),
('How To Use MySQL Well','After you went through a ...'),
('Optimizing MySQL','In this tutorial we will show ...'),
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');
SELECT * FROM articles
WHERE MATCH (title,body)
AGAINST ('database' IN NATURAL LANGUAGE MODE);..。我的问题是,示例显示选择返回第一行和第五行(“..DataBase.”)和“..database..”)但我只得到一行(‘数据库’)!
该示例没有演示示例中表的排序规则,但我最终得到了示例表的标题和正文列上的latin1_general_cs。
我的MySQL版本是5.1.39-日志,连接排序规则是utf8_unicode_ci。
我真的很感激有人能提出为什么我的经验与手册中的例子不同!
感谢你的任何建议。
发布于 2010-05-20 22:31:20
我想您的默认排序规则在某个地方是区分大小写的,因为您最终在您的表中使用了latin1_general_cs。也许刚开始的时候?
您可以检查
show variables like 'collation%'对我来说:
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)因此,这个示例可以像我的服务器上所宣传的那样工作。
表中列的排序规则将酌情默认为数据库、服务器或表排序规则。换句话说,列级别指定的排序规则覆盖表级别上的任何排序规则,后者覆盖数据库级别,等等。
列排序规则是使用此语法指定
col_name {CHAR | VARCHAR | TEXT} (col_length)
[CHARACTER SET charset_name]
[COLLATE collation_name]有关血淋淋的细节,请参见MySQL文档的第9.1节。
https://stackoverflow.com/questions/2878135
复制相似问题