我目前正在努力解决复杂的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-Request的已使用属性的信息(顺便说一句,重复内容将由重定向和预定义模式修复)。 “不存在的属性”/“垃圾”是可能的,应该被忽略。
更新:
想法1:我正在考虑的一个问题是用破折号分割查询字符串并按值分析它们,问题是:在两个或三个或更多单词组合处一些属性有太多不同的组合和变化,所以一个查询的讨论会杀死这个想法我认为..
创意2:另一种方式是建立一个(在我看来)过大的Alias / URL-Table,包含所有不同的组合,但我认为这只是一个丑陋的解决方法。大约有15.000个不同的属性,因此不同排序顺序中的别名计数正在扼杀这个想法。
创意3:轮到你了!谢谢你的思想和时间。
答案 0 :(得分:0)
如果您将所有属性值限制为唯一,则此方法可行的唯一方法。因此,您制作一组类别+颜色+制造商等。所有值必须是唯一的。这将允许您查找该值属于哪个属性。 这个数据结构应该相当简单:
{_id:ValueOfTheProperty, Property:TypeOfProperty}
以下是一些可能的样本:
{ _id: Red, Property: Color }
{ _id: Green, Property: Color }
{ _id: Boots, Property: Category }
{ _id: Shoes, Property: Category }
...
这样,顺序无关紧要,您可以将它们一次转换为地图:
{ Color: Red, Category: Boots }
虽然,我预测这里有一些暧昧名字的问题。
答案 1 :(得分:0)
虽然你的问题有点宽泛,但下面是一些想法。除非你找到一个完全符合你想要的免费或商业引擎,否则没有一个很棒的答案。
我对您的问题的看法是将URL视为关键字列表。