Algorithm RESTful路由分组算法

Algorithm RESTful路由分组算法,algorithm,text-processing,Algorithm,Text Processing,给定已知的URL列表有点“RESTful”,什么样的算法可以对它们进行分组,以便将映射到同一“控制器/操作/视图”的URL分组在一起 例如,给定以下列表: http://www.example.com/foo http://www.example.com/foo/1 http://www.example.com/foo/2 http://www.example.com/foo/3 http://www.example.com/foo/1/edit http://www.example.com/f

给定已知的URL列表有点“RESTful”,什么样的算法可以对它们进行分组,以便将映射到同一“控制器/操作/视图”的URL分组在一起

例如,给定以下列表:

http://www.example.com/foo
http://www.example.com/foo/1
http://www.example.com/foo/2
http://www.example.com/foo/3
http://www.example.com/foo/1/edit
http://www.example.com/foo/2/edit
http://www.example.com/foo/3/edit
它将它们分为以下几类:

http://www.example.com/foo

http://www.example.com/foo/1
http://www.example.com/foo/2
http://www.example.com/foo/3

http://www.example.com/foo/1/edit
http://www.example.com/foo/2/edit
http://www.example.com/foo/3/edit
事先对URL的顺序或结构一无所知。在我的示例中,这将有点容易,因为ID显然是数字的。理想情况下,我想要一个即使ID是非数字的(如
http://www.example.com/products/rocket
http://www.example.com/products/ufo


实际上,这只是为了说,“给定这些URL,我通过删除我认为是URL的“变量”ID部分来对它们进行分组。”

将每个URL拆分为一个字符串数组,分隔符为“/”

e、 g.
http://www.example.com/foo/1/edit
将给出数组
[http:,www.example.com,foo,1,edit]

如果两个数组(URL)在除一个之外的所有索引中共享相同的值,则它们将位于同一组中

e、 g.
http://www.example.com/foo/1/edit
=
[http:,www.example.com,foo,1,edit]
http://www.example.com/foo/2/edit
=
[http:,www.example.com,foo,2,edit]
。除了#3在第一个数组中为1,在第二个数组中为2之外,数组在所有索引中都匹配。因此,URL属于同一组


很容易看到像
http://www.example.com/foo/3
http://www.example.com/foo/1/edit根据该算法,
将不属于同一组。

Aliza有一个正确的想法,你想寻找“关节点”(在REST中,基本上就是传递参数的地方)。只寻找一个变化点变得很棘手

范例

http://www.example.com/foo/1/new
http://www.example.com/foo/1/edit
http://www.example.com/foo/2/edit
http://www.example.com/bar/1/new
因为我们不知道URL语义,所以可以用几种同样好的方法对它们进行分组。这实际上可以归结为这样一个问题——这段URL是REST描述符的一部分还是一个参数。如果我们知道所有的描述符是什么,其余的都是参数,我们就完成了

给出一个足够大的数据集,我们希望查看每个深度上所有URL的统计信息。e、 g.,/x/y/z/t/。我们将计算每个时隙中出现的次数,并生成一个大型联合概率分布表


我们现在可以看看符号的分布。插槽中的高计数意味着它可能是一个参数。我们将从底部开始,寻找条件概率事件,即,x是foo的概率是多少,然后y是给定x的概率是多少,等等。我必须考虑更多,以确定提取这些事件的系统方法,但如果您对URL的结构一无所知,这似乎是一个有希望的开始,那就不可能了。算法应该如何确定是否将
a/b/c
a/d/c
a/b/e
进行分组?是的,如果样本量较小,您无法做出很好的猜测。然而,我认为你做出合理猜测的几率应该随着样本的增加而提高。