Необходимо реализовать очень простой поиск в бд. Очень простой, это значит без Zend_Search_Lucene *неестественные всхлипы, и стоны*. Проблема оказалась мне не по плечу. Привожу часть кода: [sql] CREATE TABLE `tab` ( `id_request` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` text, PRIMARY KEY (`id_request`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; SET NAMES 'utf8'; SET CHARACTER SET 'utf8'; SET SESSION collation_connection = 'utf8_general_ci'; SELECT `fio` FROM `tab` WHERE `name` REGEXP('Фруктовый гусь'); [/sql] Только используя данную комбинацию удалось получать чуть менее чем сносные результаты поиска. Однако при появлении буквы `г` в поиске - вся хитроумная поисковая система начала меня не любить. Побаловавшись с функцией ord() понял, что символы в базе и при простом тексте или $_POST переменной разнятся. Вопрос - может я записываю как-то неверно? Или всё-таки механизм должен быть совсем другим.
1. SET NAMES 'utf8'; - достаточно, SET CHARACTER SET 'utf8'; и SET SESSION collation_connection = 'utf8_general_ci'; - излишне 2. CREATE TABLE... .. `name` text COLLATE - укажите (utf8_general_ci) 3. Данные для поиска должны быть в utf-8 кодировке. 4. Поиск осуществляйте либо оператором MATCH либо LIKE. Искать подстроку регэкспом глупо.