Eficacia Dexgo QuerySet regex
Tengo un modelo como este:
class CampaignPermittedURL(models.Model):
hostname = models.CharField(max_length=255)
path = models.CharField(max_length=255,blank=True)
Con frecuencia, se me entregará una URL, que puedo urlsplit en un nombre de host y una ruta. Lo que me gustaría es que el usuario final pueda ingresar un nombre de host (yahoo.com) y posiblemente una ruta (bodas).
Me gustaría encontrar cuando una URL no 'coincida' con esa combinación de nombre de host / ruta, así:
éxito: www.yahoo.com/weddings/newyorkéxito: yahoo.com/weddingsfalla: cnn.comfalla: cnn.com/weddingsCreo que la mejor manera de hacer esto es:
url = urlsplit("http://www.yahoo.com/weddings/newyork")
### split hostname on . and path on /
matches = CampaignPermittedURL.objects.filter(hostname__regex=r'(com|yahoo.com|www.yahoo.com)'), \
path__regex=r'(weddings|weddings/newyork)')
¿Alguien tiene mejores ideas? estoy usandoPostgreSQL y de otra manera querría intentarloDjango búsqueda de texto completo pero no estoy seguro de si eso vale la pena o si realmente satisface mis necesidades mejor que esto. ¿Existen otros métodos que sean igualmente rápidos?
Tenga en cuenta que mi método tiene la URL pasada y que el objeto CampaignPermittedURL puede tener muchos cientos de registros. Estoy buscando soluciones extensibles / mantenibles principalmente, pero también necesita ser eficiente ya que esto se escalará a varios cientos de llamadas por segundo.
También estoy bien con el uso de otro back-end (Esfinge?) pero estoy más preocupado por quedarme con Django estándar en el mayor grado posible.