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

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

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

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

Я хотел бы найти, когда 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)

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