- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый вечер, как приравнять буквы "е" и "ё" в поиске, чтобы они считались одной и той же буквой?
Правильно настроить кодировки и локали на сервере.
Убедиться в отсутствии модификатора "BINARY" в SQL-запросах.
Добрый вечер, как приравнять буквы "е" и "ё" в поиске, чтобы они считались одной и той же буквой?
Я не думаю что кто-то там в здравом уме использовал BINARY. Так что остается еще один случай - вы используете cp1251 в базе и индексах.
Внезапно, у mysql в разных charset была выбрана разная "сила сравнения" (collation strength). Та, которая вам нужна - это в utf8.
И не забыть выразить негодование по этому поводу на сайте bugs.mysql.com. Реально ведь бардак.
;13432299']Правильно настроить кодировки и локали на сервере.
Убедиться в отсутствии модификатора "BINARY" в SQL-запросах.
а какой-нибудь не столь революционный способ есть?
а какой-нибудь не столь революционный способ есть?
Ну, как уже верно заметил коллега, вряд ли в SQL-запросах используется BINARY.
А во всём остальном никакой революции нет. Всё вполне естественно.
Чтобы поиск работал по-человечески, нужно, чтобы у mysql-я была нужная локаля, чтобы данные не были криво залиты в другой кодировке, и чтобы была установлена нужная кодировка сопоставления (collation).
Файл - /engine/modules/search.php
После строки:
добавляем это:
Файл - engine/ajax/search.php
После строки:
добавляем это:
Проверил на DLE 10.2 - работает.
дани мапов, вы считаете, такие костыли правильнее, чем настройка локали / collation-а? :)
Если да, то в этом случае нужно применять iconv и конвертировать все символы и диакритическими знаками.
Потому что, теоретически, в поиске могут искать "Кёнигсберг" и "Königsberg".
---------- Добавлено 21.01.2015 в 12:55 ----------
Файл - /engine/modules/search.php
После строки:
добавляем это:
Файл - engine/ajax/search.php
После строки:
добавляем это:
Проверил на DLE 10.2 - работает.
да спасибо, тоже работает, только немного не так, как я хотел. Например когда ввожу ёмобиль, поиск находит по запросу "емобиль", а статью "ёмобиль" он не выводит, а нужно чтобы статью "ёмобиль" выводили и если ввести "ёмобиль", и если ввести "емобиль"..надеюсь не запутал)
да спасибо, тоже работает, только немного не так, как я хотел. Например когда ввожу ёмобиль, поиск находит по запросу "емобиль", а статью "ёмобиль" он не выводит, а нужно чтобы статью "ёмобиль" выводили и если ввести "ёмобиль", и если ввести "емобиль"..надеюсь не запутал)
Пользователь umka предельно ясно сказал что нужно делать. Пятый день уже топику, можно было всё же потратить жалких пару минут на решение проблемы, а не на поиск кривых костылей.
;13440845]дани мапов, вы считаете, такие костыли правильнее, чем настройка локали / collation-а?
А не факт, что там что-то неправильно настроено. Я думаю, там просто cp1251 используют и никто не задумывался зачем и почему. В правильно настроенной cp1251 ci все равно будут различаться Е и Ё. Выбрать какую именно силу сравнения использовать в mysql нельзя. Ее однажды уже выбрали разработчики.
Настройка своей специальной collation для cp1251 совсем не тривиальна и потребует своей копии mysql-сервера.
Я предлагал просто базу в utf8 перевести. А там само все исправится. По крайней мере для Ё и E.
Исходя из возможности это сделать уже и нужно выбирать решение.
netwind, я проверил, достаточно только установить collation utf8_general_ci для того поля, по которому производится поиск.
В cp1251_general_ci, действительно, "е" и "ё" считаются разными :)
Ошибок в сортировке и прочих огрехов при использовании utf8_general_ci пока не заметил.
Всё остальное — кодировка БД, кодировка таблицы и их collation-ы могут быть cp1251.
И никакого "шаманства" не требуется :) Только пару раз кликнуть мышкой в phpMyAdmin.