@Byrger
Разработчик ПО для платежных систем

Как сделать поиск на сайте по ключам (запрос в БД)?

У меня есть таблица в бд с товарами.
У каждого товара есть поле keywords По которым его можно искать, пример "пиво, amstel, амстел"

Делаю запрос WHERE keywords LIKE '%searsh%'
Где search запрос пользователя.

Работает отлично если пользователь введет "пиво", "амстел" а к примеру если ввести "пиво амслел" то естественно не найдет.

Как лучше сделать?

Пока в голову пришли 2 идеи, сделать много LIKE в зависимости от того сколько пробелов в строке поиска
Или забирать всю таблицу БД и парсить уже с помощью PHP
  • Вопрос задан
  • 330 просмотров
Решения вопроса 1
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
очередной ВАЛАСИПЕД? ищите mysql fulltext search - и будет Вам счастье.

к слову
1. раньше работал только в майисам. что-то около 5.5-5.6 прикрутили и у инно.
2. по дефолту минимальна длина строки, по которой ищет вроде бы 4 символа ("пиво" найде, "бат" - уже нет). Правьте
[mysqld]
ft_min_word_len=3,
после чего индекс надо перестраивать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
peterzubkoff
@peterzubkoff
По сути вопроса — делайте много like.

Советую использовать Sphinx или Elastic. Тем более, если у вас товары — в интернет-магазине удобный поиск очень важен.

Если не получится с первого раза установить или у вас нет VDS — indexden.com. На этом поиске работает LinkedIn + сервис бесплатный (до 15000 записей в индексе).

0. Регистрируетесь
1. Изучаете как делать запросы через REST Api (если ещё не умеете)
— редактирование и удаление индекса (удобно делать через Postman, если у вас хром)
— добавление отдельно, тут можно написать скриптик и даже gui к нему, но я просто добавлял новые товары в бд, выводил их циклом php, копировал и вставлял в терминал (получалось много-много команд curl)
— запросы к индексу с сайта, скрипты поиска (пример для php)
2. Мучаетесь, настраиваете, гуглите. На тостере тоже много чего есть.
3. Потихоньку изучаете установку и настройку sphinxsearch, покупаете выделенный сервер и при подходе значения записей индекса к 15 тыс. переносите на свой сервер.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы