【问题标题】:full text indexing only returns 2 rows全文索引仅返回 2 行
【发布时间】:2012-09-07 07:23:08
【问题描述】:

我有一张吃饭和旅馆的桌子 喜欢

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 个“鸡”时,此查询工作正常。但是当我放第三个时它不会返回一行。

【问题讨论】:

  • 你可以粘贴一些表格数据吗,因为它甚至没有选择一行; see here
  • 我制作了基本表:请看这里:sqlfiddle.com/#!2/f664e/2
  • 对不起,我用jfiddle来显示表格内容jsfiddle.net/arjuncc/t9pZU
  • 请使用 sql fiddle 请在之前的评论中提出建议。
  • 先生,您能否在您自己的数据库中使用此查询“SELECT * FROM food_master am WHERE MATCH(description, caption) AGAINST ('Chicken')”。我会在创建 sql fiddle 后上传数据

标签: mysql full-text-indexing mysql5


【解决方案1】:

试试IN BOOLEAN MODE

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

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

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多