Effizienter Django QuerySet-Regex

Ich habe ein Modell wie dieses:

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

Häufig wird mir eine URL ausgehändigt, die ich in einen Hostnamen und einen Pfad unterteilen kann. Ich möchte, dass der Endbenutzer einen Hostnamen (yahoo.com) und möglicherweise einen Pfad (Hochzeiten) eingeben kann.

Ich möchte herausfinden, ob eine URL nicht mit dieser Kombination aus Hostname und Pfad übereinstimmt:

Erfolg: www.yahoo.com/weddings/newyorkErfolg: Yahoo.com/HochzeitenFehler: cnn.comFehler: cnn.com/weddings

Ich denke, der beste Weg, dies zu tun, ist:

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

Hat jemand bessere Ideen? ich benutzePostgreSQL und würde es sonst versuchen wollenDjango Volltextsuche aber ich bin mir nicht sicher, ob es sich lohnt oder ob es wirklich besser zu meinen Bedürfnissen passt. Gibt es andere Methoden, die gleich schnell sind?

Beachten Sie, dass meiner Methode die URL übergeben wurde und dass das CampaignPermittedURL-Objekt möglicherweise mehrere hundert Datensätze enthält. Ich suche in erster Linie nach erweiterbaren / wartbaren Lösungen, aber es muss auch effizient sein, da dies auf mehrere hundert Anrufe pro Sekunde skaliert wird.

Mir geht es auch gut mit einem anderen Back-End (Sphinx?) aber ich bin am meisten besorgt darüber, dass ich so weit wie möglich bei Standard Django bleibe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage