Эффективное регулярное выражение 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 в максимально возможной степени.