0

我有一张食物和酒店的桌子,比如

CREATE TABLE `food_master` (
  `id` int(6) unsigned NOT NULL auto_increment,
  `caption` varchar(255) default NULL,
  `category` varchar(10) default NULL,
  `subcategory` varchar(10) default NULL,
  `hotel` varchar(10) default NULL,
  `description` text,
  `status` varchar(10) default NULL,
  `created_date` date default NULL,
  `modified_date` date default NULL,
  `chosen_mark` varchar(10) default 'no',
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `description` (`description`,`caption`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1

我有数据。我在此表中使用全文索引。我使用查询

SELECT * FROM food_master am 
WHERE MATCH(description, caption) AGAINST ('Chicken')

当我在“标题”字段中有 2 个“鸡”时,此查询工作正常。但是当我放第三个时,它不会返回一行。

4

1 回答 1

1

尝试IN BOOLEAN MODE作为

MySQL 可以使用 IN BOOLEAN MODE 修饰符执行布尔全文搜索。使用此修饰符,某些字符在搜索字符串中单词的开头或结尾具有特殊含义。

SELECT * FROM food_master 
WHERE MATCH(description, caption) AGAINST ('Chicken' IN BOOLEAN MODE)

Demo

于 2012-09-14T07:20:23.270 回答