Алгоритм поиска по тегам?
Никак. Нельзя хранить теги текстовым полем с записанными подряд тегами. Для этого делают связь многие-ко-многим, где теги в отдельной таблице, записи отдельно и есть таблица связей тегов к записям.
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
В структуре данных "многие-ко-многим" получите все записи, связанные с искомыми тегами, а сортировка выдаст количество совпадений (одной записи с разными тегами)