【发布时间】:2013-01-25 09:46:17
【问题描述】:
我目前正在处理一个复杂的 URL 处理概念问题。该应用程序有一个产品属性数据库表/集合,其中包含所有不同的产品类型(即类别、颜色、制造商、材料等)。
{_id:1,alias:"mercedes-benz",type:"brand"},
{_id:2,alias:"suv-cars",type:"category"},
{_id:3,alias:"cars",type:"category"},
{_id:4,alias:"toyota",type:"manufacturer"},
{_id:5,alias:"red",type:"color"},
{_id:6,alias:"yellow",type:"color"},
{_id:7,alias:"bmw",type:"manufacturer"},
{_id:8,alias:"leather",type:"material"}
...
现在的任务是按照每个(!)可能的顺序处理以下样式的 URL 请求,以检索包含的产品属性。唯一允许的字符是破折号(已解决的 SEO 要求,某些属性也可以自己包含破折号 - 我认为也是一个重要的点 - 即类别“suv-cars”或制造商“mercedes-benz” "):
http:\\www.example.com\{category}-{color}-{manufacturer}-{material}
http:\\www.example.com\{color}-{manufacturer}
http:\\www.example.com\{color}-{category}-{material}-{manufacturer}
http:\\www.example.com\{category}-{color}-nonexistingproperty-{manufacturer}
http:\\www.example.com\{color}-{category}-{manufacturer}
http:\\www.example.com\{manufacturer}
http:\\www.example.com\{manufacturer}-{category}-{color}-{material}
http:\\www.example.com\{category}
http:\\www.example.com\{manufacturer}-nonexistingproperty-{category}-{color}-{material}
http:\\www.example.com\{color}-crap-{manufacturer}
...
...所以:每个顺序的属性都应该被允许!结果必须是有关每个 URL 请求所用属性的信息(顺便说一句,是的,重复的内容将通过重定向和预定义的模式来修复)。 “不存在的属性”/“废话”是可能的,应该被忽略。
更新:
想法 1: 我考虑这个问题的一种方法是用破折号分割查询字符串并按值分析它们,问题是:在两个或三个或更多单词组合处有些属性有太多不同的组合和变化,所以我认为大量的查询扼杀了这个想法..
想法 2: 另一种方法是使用所有不同的组合构建一个(在我看来)太大的 Alias/URL-Table,但我认为这只是一个丑陋的解决方法。大约有 15.000 个不同的属性,因此不同排序顺序中的别名计数正在扼杀这个想法。
想法 3: 轮到你了!感谢您的用心和时间。
【问题讨论】:
标签: mongodb url alias fuzzy bigdata