У меня база данных, кодировка utf-8. Если в базе данных есть слова написанные только латинскими буквами, то все нормально, например: есть слово "River", так если ищешь слово "river", то оно находится. Как только использую диакритические знаки, то начинаются проблемы, например: есть слово "Řeka" и если ищешь слово "řeka", то оно его не находит. Т.е. я понял, что если буквы не из латиницы, то заглавные и строчные, при поиске считаются разными буквами. Для поиска использую директиву REGEXP в SQL-запросе, например: SELECT * FROM table WHERE keywords REGEXP 'Řeka'; Может быть кто-то знает как с этим быть? :roll:
Это чешский язык. (Слово означает "река") Проблема еще в том, что таких букв в чешском алфавите много: Á Č Ď É Ě Í Ň Ó Ř Š Ť Ú Ů Ý Ž плюс те же строчные
У меня есть идея, сделать функцию, которая будет все эти буквы в строке поиска переписывать так, например: 'Řeka' на '(Ř|ř|r)(É|é|e)k(Á|á|a)' Не будет ли от этого поиск слишком громоздкий?
Пробовал. Его первым как раз и пробовал. Не помогает. Тип таблицы MyISAM, поиск веду в поле, тип которого TEXT. Еще раньше вычитал в документации, что с помощью collation можно настроить сортировку. Хотел, чтобы было как в чешском алфавите: A B C Č D Ď E F ... и т.д. включил опцию utf_czech_ci, но он сортирует сначала чистую латиницу, а потом отдельно то, что с диакритикой, т.е. так же как и utf8_general_ci: A B C D ... Y Z Č Ď ... Ž Короче говоря utf_czech_ci не помагает или я чего-то упустил.
draak, спасибо! Это тоже вариант. В моей конкретной задаче я решил это иначе. Вся графа ключевых слов у меня в нижнем регистре и поиск происходит только по нижнему регистру. Но, потом я буду еще добавлять поиск по именам, так там ваш вариант как раз может пригодиться.