0

我之前创建了一个搜索,它工作正常,但尝试在不同的表中进行搜索我遇到了一些问题。

我收到错误...

SQL 查询失败。检查您的查询。

返回错误:找不到与列列表匹配的 FULLTEXT 索引

我已经(据我所知)成功地将列转换为全文,并且数据库设置为...

这是我的 SQL 信息...

创建表`用户`(
  `auto` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(6) 默认为空,
  `username` varchar(15) 默认为空,
  `first_name` varchar(20) NOT NULL DEFAULT '',
  `last_name` varchar(20) NOT NULL DEFAULT '',
  `email` varchar(30) NOT NULL DEFAULT '',
  `password` varchar(128) NOT NULL DEFAULT '',
  `ranking` varchar(128) 默认 '1',
  `sex` varchar(128) NOT NULL DEFAULT '',
  `active` varchar(128) NOT NULL DEFAULT '0',
  `ppic` varchar(128) NOT NULL DEFAULT 'ppic.jpg',
  `time_zone` varchar(128) DEFAULT 'America/Los_Angeles',
  `adult_filter` varchar(128) DEFAULT '0',
  主键(`auto`),
  FULLTEXT KEY `user_id` (`user_id`,`username`,`first_name`,`last_name`,`email`,`password`,`sex`,`active`,`ppic`,`time_zone`,`adult_filter`) ,
  FULLTEXT KEY `user_id_2` (`user_id`,`username`,`first_name`,`last_name`),
  FULLTEXT KEY `ft_index_name2` (`user_id`,`username`,`first_name`,`last_name`),
  FULLTEXT KEY `ft_index_name32` (`user_id`,`username`,`first_name`,`last_name`,`email`,`password`,`ranking`,`sex`,`active`,`ppic`,`time_zone`, `成人过滤器`),
  FULLTEXT KEY `ft_index_name322` (`user_id`),
  FULLTEXT KEY `ft_index_name3223` (`first_name`),
  FULLTEXT KEY `ft_index_name32233` (`last_name`),
  FULLTEXT KEY `ft_index_name322433`(`用户名`),
  FULLTEXT KEY `ft_index_name3232433`(`用户名`)
) 引擎=MyISAM AUTO_INCREMENT=40 默认字符集=utf8

如果您没有注意到这一点,我不知道我在用全文键做什么,这可能是问题所在。然而,我第一次做了类似的事情,它工作得很好。

这是我的搜索查询...

选择用户 ID、用户名、名字、姓氏、
 MATCH(username, first_name, last_name) AGAINST('" . $search . "') AS 分数
 来自用户
 WHERE MATCH(username, first_name, last_name) 反对('" . $search . "')
 ORDER BY 用户名

有谁知道可能导致此问题的原因?我已经在这几天了,无法弄清楚问题所在。任何帮助表示赞赏,谢谢。

4

1 回答 1

0

您需要一个 FULLTEXT 键,如下所示:

FULLTEXT KEY `ft_index_thisoneiscorrect` (username, first_name, last_name)

(请注意,匹配列的列表与您在查询中匹配的列列表相同。)

摆脱所有其他的。它们中的大多数是无用的,有几个是完全危险的。

于 2012-01-17T06:08:47.980 回答