rundll32
@rundll32

Алгоритм поиска по тегам?

Если в таблице базы данных есть строкове поле tags, которое содержит теги перечисленные через запятую, как оптимальнее реализовать поисковую выдачу? Допустим первым результатом будет запись с совпадением 3\3, потом 2\3 и 1\3.
  • Вопрос задан
  • 1063 просмотра
Решения вопроса 1
tumbler
@tumbler
бекенд-разработчик на python
SELECT record.id, count(*) 
FROM record 
   JOIN record_tags ON (record_tags.record_id = record.id)
WHERE record_tags.tag_id IN (1,2,3) GROUP BY 1 ORDER BY 2 DESC

В структуре данных "многие-ко-многим" получите все записи, связанные с искомыми тегами, а сортировка выдаст количество совпадений (одной записи с разными тегами)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Никак. Нельзя хранить теги текстовым полем с записанными подряд тегами. Для этого делают связь многие-ко-многим, где теги в отдельной таблице, записи отдельно и есть таблица связей тегов к записям.
Ответ написан
Ваш ответ на вопрос

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

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