У меня есть такая модель:
class CampaignPermittedURL(models.Model):
hostname = models.CharField(max_length=255)
path = models.CharField(max_length=255,blank=True)
Чаще всего мне вручают URL-адрес, который я могу 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 и в противном случае хотел бы попробовать Полнотекстовый поиск Django , но я не уверен, стоит ли это того или он действительно лучше моих. Существуют ли другие методы, которые одинаково быстры?
Имейте в виду, что моему методу передан URL-адрес и что объект CampaignPermittedURL может иметь много сотен записей. В первую очередь я ищу расширяемые / поддерживаемые решения, но они также должны быть эффективными, поскольку это будет масштабироваться до нескольких сотен вызовов в секунду.
Я тоже в порядке с использованием другого бэк-энда ( Sphinx ?), Но меня больше всего беспокоит возможность оставаться со стандартным Джанго в максимально возможной степени.