У меня есть база данных Postgres и таблица пользовательских тегов с столбцами UserId и TagId. Каждый пользователь может иметь несколько тегов и наоборот.Есть ли масштабируемый способ реализовать поиск базы данных по нескольким тегам?
Есть ли способ реализовать поиск по нескольким тегам масштабируемым способом? Пример запросов:
- Получить все пользователи, которые имеют как tag1 и tag2
- Получить все пользователи, которые имеют (или tag1 tag2) и Tag3
- Получить все пользователи, имеющие tag1 и tag2 и не имеют Tag3
Поскольку это непросто индексировать и масштабировать, я думал об использовании каких-то кэшей в памяти для более быстрого поиска. Знаете ли вы какие-либо доступные решения этой проблемы?
Благодаря
Сколько у вас пользователей и меток? Postgres должен иметь возможность легко справляться с этими запросами (например, выбрать всех пользователей с tag1, пересекающихся со всеми пользователями с tag2). Если у вас есть правильные индексы в памяти, это будет довольно быстро, у postgres уже есть кэши в памяти и оптимизация запросов. Если это, однако, не поможет вам хорошо, вы можете посмотреть на Solr или Elastic. – nvartolomei