【发布时间】:2010-12-04 18:33:14
【问题描述】:
我有一个这样的模型:
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,否则我想尝试Django Full Text Search,但我不确定这是否值得,或者它是否真的比这更符合我的需求。还有其他同样快的方法吗?
请记住,我的方法已将 URL 传递给它,并且 CampaignPermittedURL 对象可能有数百条记录。我首先在寻找可扩展/可维护的解决方案,但它也需要高效,因为这将扩展到每秒数百次调用。
我也可以使用另一个后端 (Sphinx?),但我最关心的是尽可能地使用标准 Django。
【问题讨论】:
标签: regex django full-text-search