---
Reflexiones iniciales sobre el problema de la búsqueda de empresas
Una reciente conversación en nuestro canal de Slack fue el punto de partida para nosotros. Uno de los desarrolladores planteó el problema de la lenta búsqueda de empresas, lo que generaba descontento entre los usuarios. Esto era especialmente evidente cuando los reclutadores intentaban encontrar rápidamente candidatos adecuados, lo que afectaba directamente a su eficacia.
Por qué es importante
El problema de la búsqueda de empresas afectaba directamente a nuestro equipo de matching, que era responsable de crear conexiones exitosas entre candidatos y empleadores. Entendíamos que una búsqueda lenta podría llevar a la pérdida de clientes potenciales y a una mala experiencia de usuario. Los reclutadores, al no obtener los resultados necesarios rápidamente, comenzaban a buscar alternativas, lo que era inaceptable para nosotros.
Problemas concretos en la búsqueda
Una vez, durante una prueba, uno de los miembros del equipo notó que la búsqueda por etiquetas de empresas tardaba hasta 15 segundos. Este tiempo aumentaba si la base de datos estaba sobrecargada. Por ejemplo, cuando un reclutador introducía una consulta para buscar empresas con ciertas etiquetas, el sistema a veces no respondía a tiempo, y los usuarios recibían un mensaje de error. Esto creaba una mala impresión de la plataforma.
Primeras intentos de solución
Inicialmente decidimos optimizar las consultas a la base de datos, sin embargo, esto no dio los resultados esperados. Mejoramos los índices, pero el tiempo de respuesta prácticamente no cambió. Al final, comprendimos que simplemente optimizar las consultas no resolvería el problema y comenzamos a buscar otros enfoques.
Solución técnica — etiquetas y caché
Decidimos implementar un sistema de etiquetado y caché, lo que mejoró significativamente el tiempo de respuesta. Las etiquetas nos permitieron agrupar empresas por categorías, y el caché redujo la carga en el servidor. Aquí hay un ejemplo de implementación del caché:
cache = {}
def get_companies_with_tags(tags):
cache_key =
---