Что использовать в качестве БД для поиска/агрегирования по тегам?
Можно попробовать redis с множествами и пересечением
у каждого тега есть свое множество записей
tag1 - record1,record2,record3,record4,record5
tag2 - record5,record6,record3
tag3 - record1,record3,record5
Дальше  выполнить мат операцию SINTER tag2 tag2 tag3 
В результате получится record3, record5
Если важна сортировка и лимиты - то можно использовать упорядоченные списки и команду ZINTERSTORE - но она менее производительна
ElasticSearch
Обсуждение Sphinx или ElasticSearch?
Боевой опыт у 2ГИС https://habrahabr.ru/company/2gis/blog/213765/