Regex eficiente do Django QuerySet

Eu tenho um modelo como este:

class CampaignPermittedURL(models.Model):
    hostname = models.CharField(max_length=255)
    path = models.CharField(max_length=255,blank=True)

Freqüentemente, eu receberei uma URL, que eu posso inserir em um nome de host e um caminho. O que eu gostaria é que o usuário final possa inserir um nome de host (yahoo.com) e possivelmente um caminho (casamentos).

Eu gostaria de encontrar quando um URL não "corresponde" a combinação de nome de host / caminho assim:

sucesso: www.yahoo.com/weddings/newyorksucesso: yahoo.com/weddingsfalha: cnn.comfalha: cnn.com/weddings

Eu acho que a melhor maneira de fazer isso é:

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)')

Alguém tem ideias melhores? estou usandoPostgreSQL e caso contrário, gostaria de tentarPesquisa de Texto Completo do Django mas não tenho certeza se vale a pena ou se realmente atende às minhas necessidades melhor do que isso. Existem outros métodos que são igualmente rápidos?

Tenha em mente que o meu método tem o URL passado para ele e que o objeto CampaignPermittedURL pode ter muitos cem registros. Eu estou procurando soluções extensíveis / de fácil manutenção, mas também precisa ser eficiente, já que isso será escalonado para várias centenas de chamadas por segundo.

Eu também estou bem com o uso de outro back-end (Esfinge?) mas eu estou mais preocupado em ficar com o Django padrão no mais alto grau possível.