@ahahahaha2312

Как сделать умный поиск по базе?

У меня есть база данных с разными словами.
Мне нужно сделать поиск по базе по этим словам.
Человек вводит в форму свое слово, нажимает "Найти" и отправляется запрос на поиск.

Дело в том, что поиск через LIKE будет выводить все совпадения которые только найдет подряд. А как сделать так, чтобы сначала выводились более подходящие, то есть те, у которых совпадают первые буквы, а потом уже все остальные совпадения?

Пример:
Слова в базе:
1 - Иван
2 - Ваня
3 - Ивановы
4 - Привал
...

Запрос пользователя: ва
В ответ должно прийти: Ваня, Иван, Ивановы...
А если будем просто через LIKE то придет вот так (так не нужно): Иван, Ваня, Ивановы...

Мой текущий запрос к базе:
$query = "SELECT word FROM `words` WHERE word LIKE '%$search%' ";
  • Вопрос задан
  • 443 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Akina
Сетевой и системный админ, SQL-программист.
А если будем просто через LIKE то придет вот так (так не нужно): Иван, Ваня, Ивановы...

Нет. Отбор записей и их сортировка - две совершенно независимые операции.
SELECT word 
FROM words 
WHERE word LIKE '%$search%'
ORDER BY LOCATE($search, word), word
Ответ написан
Комментировать
no_one_safe
@no_one_safe
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы