Здравствуйте. В базе есть таблица музыкальных групп, нужно организовать поиск названию и сортировку по позиции вхождения подстроки.
То есть:
- вводим слово "cat", находятся все группы, в названии которых есть слово cat и чем ближе оно к началу названия, тем выше результат. Группы, начинающиеся с "cat" будут первыми.
Этого я добился вот таким запросом:
SELECT `id`, `name`, LOCATE('cat', `name`)
FROM `artists`
WHERE `name` LIKE '%cat%'
ORDER BY LOCATE('cat', `name`)
И тут я столкнулся с проблемой, что поиск по LIKE '%cat%' находит и "Accent Sensitive" результаты. То есть и cat и cät и čat и сät. Это правильно, но ORDER BY LOCATE('cat', `name`) не может их отсортировать правильно.
Получается что LIKE находит синонимы букв из других языков, а LOCATE не может с ними работать.
Как заставить заставить его сортировать их тоже?
И еще вопрос, как можно заменять символы при поиске? Например есть группа $hort, ее нужно уметь искать по запросу 'short'.
Не предлагайте, пожалуйста, поисковые движки. Нужно сделать это на сыром mysql.
Спасибо.