Wydajny wyrażeń regularnych Django QuerySet

Mam taki model:

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

Często otrzymuję adres URL, który mogę przekształcić w nazwę hosta i ścieżkę. Chciałbym, aby użytkownik końcowy mógł wprowadzić nazwę hosta (yahoo.com) i ewentualnie ścieżkę (śluby).

Chciałbym znaleźć, gdy URL nie pasuje do takiej kombinacji nazwy hosta / ścieżki:

sukces: www.yahoo.com/weddings/newyorksukces: yahoo.com/weddingsbrak: cnn.comporażka: cnn.com/weddings

Myślę, że najlepszym sposobem na to jest:

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

Czy ktoś ma lepsze pomysły? ja używamPostgreSQL i inaczej chciałbym spróbowaćWyszukiwanie pełnotekstowe Django ale nie jestem pewien, czy to się opłaca, czy też lepiej pasuje do moich potrzeb. Czy są inne metody, które są równie szybkie?

Pamiętaj, że moja metoda ma przekazany adres URL i że obiekt CampaignPermittedURL może mieć wiele setek rekordów. Szukam przede wszystkim rozwiązań rozszerzalnych / serwisowalnych, ale musi być również wydajne, ponieważ będzie skalowane do kilkuset wywołań na sekundę.

Nie mam nic przeciwko używaniu innego zaplecza (Sfinks?), ale najbardziej zależy mi na utrzymaniu standardowego Django w najwyższym możliwym stopniu.

questionAnswers(2)

yourAnswerToTheQuestion