Вводные мысли о проблеме поиска компаний
Недавний разговор в нашем Slack-канале стал для нас отправной точкой. Один из разработчиков поднял вопрос о медленном поиске компаний, который вызывал недовольство у пользователей. Это было особенно заметно, когда рекрутеры пытались быстро находить подходящих кандидатов, что напрямую влияло на их эффективность.
Почему это важно
Проблема поиска компаний напрямую затрагивала нашу команду матчинга, которая отвечала за создание успешных соединений между кандидатами и работодателями. Мы понимали, что медленный поиск может привести к потере потенциальных клиентов и ухудшению пользовательского опыта. Рекрутеры, не получая нужные результаты быстро, начинали искать альтернативы, что было для нас недопустимо.
Конкретные проблемы поиска
Однажды, в ходе тестирования, один из членов команды заметил, что поиск по тегам компаний занимал до 15 секунд. Это время увеличивалось, если база данных была загружена. Например, когда рекрутер вводил запрос на поиск компаний с определенными тегами, система иногда не успевала реагировать, и пользователи получали сообщение об ошибке. Это создавало плохое впечатление о платформе.
Первые попытки решения
Первоначально мы решили оптимизировать запросы к базе данных, однако это не дало ожидаемых результатов. Мы улучшили индексы, но время отклика практически не изменилось. В итоге мы поняли, что просто оптимизация запросов не решит проблему, и начали искать другие подходы.
Техническое решение — теги и кеш
Мы решили внедрить систему тегирования и кеширования, что значительно улучшило время отклика. Теги позволили нам группировать компании по категориям, а кеширование снизило нагрузку на сервер. Вот пример реализации кеширования:
cache = {}
def get_companies_with_tags(tags):
cache_key =