Поиск в MySQL с помощью uft8_general_ci чувствителен к регистру FULLTEXT? - PullRequest
3 голосов
/ 09 февраля 2011

Я настроил таблицу MyISAM для поиска в FULLTEXT.Я не хочу, чтобы при поиске учитывался регистр символов.

Мои поиски выполняются по следующим направлениям:

ВЫБРАТЬ * ИЗ ПОИСКА, ГДЕ СОГЛАСОВАНО (ключевые слова) ПРОТИВ ('+iversity + kitten 'IN BOOLEAN MODE);

Допустим, поле ключевых слов, которое я ищу, имеет значение "мой котенок Diversity".

Я заметил, что поиски были чувствительными к регистру.Я дважды проверил свою сортировку в таблице поиска, она была установлена ​​на utf8_bin .D'о!Я изменил его на utf8_general_ci .

Но мой запрос все еще чувствителен к регистру!Почему?

Нужно ли изменить настройку сервера?

Есть ли что-то, что мне нужно сделать, кроме изменения параметров сортировки?

Я сделал "REPAIR TABLE"поиск «БЫСТРЫЙ», чтобы перестроить индекс FULLTEXT, но это тоже не помогло ...

Мой поиск по-прежнему чувствителен к регистру.= (* * Тысяча двадцать пять

Ответы [ 2 ]

5 голосов
/ 09 февраля 2011

Ага, на этот раз разобрался с реалами.

Я считаю, что моей проблемой было использование NaviCat для обновления параметров сортировки. У меня есть более старая версия NaviCat, возможно, это была ошибка или что-то в этом роде.

Выполнение:

ALTER TABLE search Преобразовать в набор символов utf8 COLLATE utf8_general_ci;

исправил это правильно.

Всегда используйте командную строку, дети! =)

1 голос
/ 09 февраля 2011

Хм - это поведение не соответствует инструкции :

По умолчанию поиск выполняется без учета регистра.Однако вы можете выполнить полнотекстовый поиск с учетом регистра, используя двоичное сопоставление для индексированных столбцов.Например, столбцу, в котором используется набор символов latin1, может быть назначено сопоставление latin1_bin, чтобы сделать его чувствительным к регистру для полнотекстового поиска.

Какую версию MySQL вы используете?Можете ли вы предоставить некоторые данные, которые позволили бы воспроизвести проблему на другом компьютере?

...