Для тех, кто не в курсе, плагин Relevanssi — довольно хорошая альтернатива стандартному поиску WP. В дефолтном поиске куча глупостей и несуразностей, взять хотя бы то, что результаты сортируются не по релевантности а по дате (!!!). Вообщем, меня такая шняга не устраивала и я полез смотреть, что же колелктивный разум написал полезного в этом направлении.

Я не буду описывать все мытарства и муки поиска адекватного плагина, скажу сразу результат — с первого раза завелся и вполне меня устроил плагин Relevanssi. Вполне себе добротный плагин, есть подсветка найденного, можно даже переопределять веса разных элементов поста (скока веса давать заголовку, скока меткам, скока except’у, скока самому контенту и пр.).

Вообщем, поставил я его, настроил и забыл. А там такая фишка есть — можно вести логи запросов поиска, ну я эту фишку включил естественно. Чрз пару недель захожу посмареть, чтож чаще всего ищут. И хуякс — облом (( В статистике показываюца одни кракозябры :( Что-то вроде такой вот паебени:
bnopnya
При этом, поиск работает вполне себе нормально. Полез в БД, туда, где логи запросов хранятся, а там вообще полный пиздец:
bnopnya2
Полез в настройки БД, думал, у меня где-то просочился предательский latin1, аннет! везде стоял православный utf-8. Полез в код плагина — искал, может где там задается кодировка при сохранении логов…

Нашел это место, но никаких кодировок там небыло. Только была одна функция — htmlentities(). Она все, что можно преобразовать в html-мнемоники, преобразует. Ну, думаю, полезно, да, чтоб всяких инъекций не втыкали… Потом вчитываюсь в описание функции:

Необязательный третий аргумент charset определяет кодировку, используемую при преобразовании. Поддержка этого аргумента была добавлена в PHP 4.1.0. По умолчанию в настоящее время используется кодировка ISO-8859-1.

А это ИСО — как раз и есть latin1 !!!!1111одинодин

Где-где, а тут я ну никак не ожидал такого подвоха от обычной казалось бы функции. Но главное — мы нашли где косяк, процесс исправления как обычно занимает 10 секунд, в отличии от процесса поиска косяка. Добавляем третий параметр к функции:

$query = htmlentities($query, ENT_QUOTES, 'UTF-8');

Удаляем предыдущую стату, ищем по-новой, проверяем и — вуаля, у нас русская правильная стата!

Аминь!