建表如下:CREATE TABLE `tnew` (
`id`  int NOT NULL ,
`content`  longtext NULL ,
PRIMARY KEY (`id`),
FULLTEXT INDEX `content` (`content`)
)
ENGINE=MyISAM
CHECKSUM=0
DELAY_KEY_WRITE=0
;
说明下,我已建立了全文搜索索引content,表的类型为MyISAM应该也没问题,但我查询时,却没查到任任记录。
而我用like来查,确实能查到一条记录。
Select *  from tnew where MATCH content AGAINST ('张三') ;//无记录
Select *  from tnew where  content like  ('%张三%') ;//有记录
应该这样写没错吧?有请大虾指点。

解决方案 »

  1.   

    mysql> set names gb2312;
    Query OK, 0 rows affected (0.00 sec)mysql> select *from tnew;
    +----+---------+
    | id | content |
    +----+---------+
    |  1 | 张三    |
    |  2 | 李四    |
    |  3 | 周一    |
    |  4 | 胡三    |
    |  5 | 赵四    |
    |  6 | 谢一    |
    +----+---------+
    6 rows in set (0.02 sec)mysql> select * from tnew where match(content) against('张三');
    +----+---------+
    | id | content |
    +----+---------+
    |  1 | 张三    |
    +----+---------+
    1 row in set (0.00 sec)1:楼主检查下你的ft_min_word_len 是多,默认是4,需要楼主改成2;
    在my.cnf或则my.ini里面的mysqld选项组里面添加
    ft_min_word_len=2
    2:重启数据库
    3:repair table;
      

  2.   


    ft_min_word_len 为4 ,也是可以启动的。
      

  3.   


    是的,我这里,也是中文检索不出来,E文可以的,我的是utf-8字符集编码。
      

  4.   

    汗了下,还真是这样,改成张三丰,张三也查不出了。
    那看来还是like好用啊。。