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/weddingsEu 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.