FULLTEXT для поиска проблем - PullRequest
       9

FULLTEXT для поиска проблем

0 голосов
/ 17 января 2012

Я уже создал поиск, и он работает нормально, но, пытаясь сделать это в другой таблице, я сталкиваюсь с некоторыми проблемами.

Я получаю сообщение об ошибке ...

SQL-запрос не выполнен.Проверьте ваш запрос.

Возврат ошибки: не удается найти индекс FULLTEXT, соответствующий списку столбцов

Я (насколько мне известно) успешно преобразовал столбцы в полный текст, и база данных настроенаto ...

Вот моя информация 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 голосов
/ 17 января 2012

Вам нужен ключ FULLTEXT, который выглядит следующим образом:

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

(Обратите внимание, что список совпадающих столбцов совпадает со списком столбцов, которые вы сопоставляете в своем запросе.)

Избавься от всех остальных. Большинство из них бесполезны, а некоторые просто опасны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...