data 字段定义了全文搜索索引
Storage Engine 也设置成了MyISAMmysql>SELECT id FROM reviews WHERE MATCH (data) AGAINST ('single') ;MySQL 返回的查询结果为空(即零行)。 (查询花费 0.0003 秒) //为什么没有结果返回,还要设置什么东西吗下面是数据mysql> SELECT * FROM reviews;+----+--------------------------------------------+| id | data |+----+--------------------------------------------+| 1 | Gingerboy has a new single out called ... || 2 | Hello all, I really like the new Madon ... || 3 | Have you heard the new band Hotter Than... |+----+--------------------------------------------+3 rows in set (0.00 sec)
解决方案 »
- win7下配置postgresql免安装版,出现了问题。急急急急急急!!
- MySQL4.0中timestamp的用法,在线等,谢谢。
- 关于在shell中对查询结果的遍历.
- 关于多表关联Update 的sql问题的请教!
- 今天刚开始碰mysql,想请教建立数据库的步骤
- 一个常见的查询问题,希望大家能够帮我!多谢!
- 如何去掉时间中部分内容
- SQL优化 ,麻烦大大帮忙
- MySQL导入CSV(逗号文件),如果中间有空值怎么办?
- 如何取字段指定内容
- Lost connection to MySQL server at 'reading initial communication packet'
- mysql问题,更新时查询条件字段是浮点数,无法更新,帮帮忙
如:
排除不完整单词排除长度少于4个字符(3个或者更少)的词 (ft_min_word_len/ft_max_word_len)排除在一半以上的行中都出现的词(这意味着至少要有3行)再多加几条数据试下.
创建表格
CREATE TABLE reviews (id INT(5)
PRIMARY KEY NOT NULL AUTO_INCREMENT, data TEXT);
添加数据: mysql> INSERT INTO `reviews` (`id`, `data`) VALUES(1, 'Gingerboy has a new single out called Throwing Rocks. It's great!');mysql> INSERT INTO `reviews` (`id`, `data`) VALUES (2, 'Hello all, I really like the new Madonna single. One of the hottest tracks currently playing...I've been listening to it all day');mysql> INSERT INTO `reviews` (`id`, `data`)VALUES (3, 'Have you heard the new band Hotter Than Hell?They have five members and they burn their instruments when they play in concerts. These guys totally rock! Like, awesome, dude!');
定义data索引
mysql> ALTER TABLE reviews ADD FULLTEXT INDEX (data);检查索引
mysql> SHOW INDEXES FROM reviews;
Table | Column_name | Packed | Null | Index_type | Comment |----------+---------------+--------+------+------------+---------+| reviews | id | NULL | | BTREE | || reviews | data | NULL | YES | FULLTEXT | |+---------+---------------+--------+------+------------+---------+2 rows in set (0.01 sec)查找
mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('single');
0 rows in set (0.00 sec)
你用
SELECT id FROM reviews WHERE MATCH (data) AGAINST ('Gingerboy');就可以得到数据,因为'Gingerboy' 在你的表中出现了1次,低于50%.这个就是FULLTEXT的不足
SELECT *,MATCH (data) AGAINST ('Gingerboy') as mtch FROM reviews按照这个排序则可以
SELECT *,MATCH (data) AGAINST ('Gingerboy') as mtch FROM reviews
having mtch > '数值'
order by math desc/asc
...