首页 文章

FULLTEXT搜索问题

提问于
浏览
0

我以前创建了一个搜索,它工作正常,但尝试在另一个表中执行它我遇到了一些问题 .

我收到了错误......

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

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

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

这是我的SQL信息......

CREATE TABLE `users` (
  `auto` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(6) DEFAULT NULL,
  `username` varchar(15) DEFAULT NULL,
  `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) DEFAULT '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',
  PRIMARY KEY (`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`,`adult_filter`),
  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` (`username`),
  FULLTEXT KEY `ft_index_name3232433` (`username`)
) ENGINE=MyISAM AUTO_INCREMENT=40 DEFAULT CHARSET=utf8

如果您没有注意到这一点,我不知道我正在使用全文密钥,这可能是问题 . 然而我第一次做了类似的事情并且工作得很好 .

这是我的搜索查询......

SELECT user_id, username, first_name, last_name,
 MATCH(username, first_name, last_name) AGAINST('" . $search . "') AS score
 FROM users
 WHERE MATCH(username, first_name, last_name) AGAINST('" . $search . "')
 ORDER BY username

有谁知道可能导致这个问题的原因?我已经在这几天了,无法弄清楚问题 . 感谢任何帮助,谢谢 .

1 回答

  • 0

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

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

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

    摆脱所有其他的 . 他们中的大多数都没用,有些是彻头彻尾的危险 .

相关问题