Как составить SQL запрос по поиску текста?

Собственно есть поле tags, а в нем содержаться теги перечисленные через запятую. Т.е так

слово, слово , два слова,еще тег какой-то, моежт быть целое выражение,

Поисковый запрос состоит из слова, но в поле этот тег может быть как вначале, так и в конце, может быть отделен запятыми с двух сторон или с одной, может быть запятая и пробел, затем слово и в конце запятая и так далее. Но важно, чтобы введя запрос "слово" нашлись только те у кого есть "слово" но такие теги как "слово второе, слово третье, еще слово," не попали под критерий.
  • Вопрос задан
  • 3225 просмотров
Пригласить эксперта
Ответы на вопрос 2
@kaasius
Делается это так.
1. Создается таблица тегов. Там только id и тег.
2. Для каждой тегируемой сущности создается таблица отношений. Там хранятся id сущности и id тега. Сколько тегов у сущности, столько записей в таблице отношений с id этой сущности.

И соответственно поиск по тегам тогда выполняется как поиск точного соответствия.

Алсо, так, как делаете вы, можно реализовать на монге например.
Ответ написан
Satanpit
@Satanpit
Front-end developer
Как я уже здесь писал, можно попробовать так:
SELECT id FROM `table` WHERE FIND_IN_SET('слово',  tags)


а вообще, да, @kaasius дело говорит, если у Вас есть возможность переделать структуру - переделайте.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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