Эффективное регулярное выражение Django QuerySet

У меня есть такая модель:

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

Часто мне будет выдаваться URL-адрес, который я смогу разделить на имя хоста и путь. Мне бы хотелось, чтобы конечный пользователь мог ввести имя хоста (yahoo.com) и, возможно, путь (свадьбы).

Я хотел бы найти, когда URL не «совпадает» с этой комбинацией имя хоста / пути, например:

успех: www.yahoo.com/weddings/newyorkуспех: yahoo.com/weddingsошибка: cnn.comошибка: cnn.com/weddings

Я думаю, что лучший способ сделать это:

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

У кого-нибудь есть идеи получше? Я используюPostgreSQL и иначе хотел бы попробоватьДжанго Полнотекстовый поиск но я не уверен, что это того стоит или действительно ли оно соответствует моим потребностям лучше, чем это. Есть ли другие методы, которые одинаково быстро?

Имейте в виду, что моему методу передан URL-адрес и что у объекта CampaignPermittedURL может быть много сотен записей. Прежде всего, я ищу расширяемые / поддерживаемые решения, но они также должны быть эффективными, поскольку это будет масштабироваться до нескольких сотен вызовов в секунду.

Я также в порядке с использованием другого сервера (сфинкс?) но меня больше всего беспокоит то, чтобы оставаться со стандартным Django в максимально возможной степени.

Ответы на вопрос(2)

Ваш ответ на вопрос