1. Вариант съест много памяти и заработает только в случае если искать сторонним сервисом, поиск с помощью like - зло, на 5 запросах в минуту может и потянет, да и то зависит от объемов бд.
2. Уже правильно, один минус, сложно искать пересечения, запросы будут тяжеловаты. Не будет полнотекстового поиска (хотя зависит от бд)
3. Использовать сторонний сервис, например sphinx, даст полнотекстовый поиск, например по тайтлам, даст поиск по тагам (multi-value аттрибуты), даст возможности по управлению ранжированием и т.д. Как вариант можете посмотреть в сторону lucene, но с ним общаться не приходилось.
Лучше копайте в сторону 3го решения, не так оно сложно, как пытается выглядеть.