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/weddings

Creo 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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta