CREATE TABLE `tb_pn_items` (
  `tid` int(11) NOT NULL auto_increment,
  `shortdesc` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`tid`),
  FULLTEXT KEY `shortdesc` (`shortdesc`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;利用如下 SQL
SELECT * FROM `tb_pn_items` WHERE MATCH (shortdesc) AGAINST ('+Drive +LED' IN BOOLEAN MODE)
本希望它返回的字段 有 Drive 与 LED, 可是它不工作等效与 '+Drive  LED' ,也就是说一定有Drive,但不一定有 LED.
而且我把 数据表 改成
CREATE TABLE `tb_pn_items` (
  `tid` int(11) NOT NULL auto_increment,
  `shortdesc` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`tid`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
效果一样。不知什么地方错了。谢谢 mysql 4.1 ,php 4+

解决方案 »

  1.   

    '+Drive  LED' 这个LED不是必要条件,哪你加上它好像可有可无.没有实际意义呀.
    他等同于'+Drive'
    'Drive  LED' 这表示,满足Drive或者LED都可以.
      

  2.   

    我需要的是 有 Drive 与 LED ,也就是and的意思,缺一不可。
      

  3.   

    '+Drive +LED' 哪就这样写好了.
      

  4.   

    杂手册中找一句关键的话        一些词在全文搜索中会被忽略: 
        * 任何过于短的词都会被忽略。 全文搜索所能找到的词的默认最小长度为 4个字符。
    要是搜索 SELECT * FROM `tb_pn_items` WHERE MATCH (shortdesc) AGAINST ( '+LED'  ) 不回返回记录
    SELECT * FROM `tb_pn_items` WHERE MATCH (shortdesc) AGAINST ( '+LEDs'  ) 可以返回记录
    我把语句改成 SELECT * FROM `tb_pn_items` WHERE MATCH (shortdesc) AGAINST ('+Drive +LEDS' IN BOOLEAN MODE) 
    返回的记录倒符合要求了,但是记录数不对