2011-05-27 3 views
2

「RESTful」であることがわかっているURLのリストがある場合、同じ「コントローラ/アクション/ビュー」にマッピングされるURLがグループ化されるようにグループ化するための適切なアルゴリズム?次のようにそれは希望のグループにそれらをRESTfulルートをグループ化するためのアルゴリズム

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/rockethttp://www.example.com/products/ufoのように)良い仕事をするアルゴリズムが必要です。

「これらのURLを指定すると、URLのID部分を可変にすると思っているものを除外してグループ化しました」

+0

URLの構造について何も知らない場合、それは不可能です。アルゴリズムは 'a/b/c'を' a/d/c'または 'a/b/e'とグループ化するかどうかをどのように判断すべきですか? – svick

+0

はい、小さなサンプルサイズでは、良い推測をすることはできません。しかし、私は、合理的な推測を行うあなたの確率は、より大きなサンプルで改善すべきだと思います。 – Larsenal

答えて

1

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の意味のないアイデアを持っていないので、これらは、いくつかの同様に良い方法をグループ化することができます。これは本当にこの問題に沸きます。これは、REST記述子のURL部分またはパラメータの部分です。すべての記述子が何であるかを知っていれば、残りはパラメータであり、完了です。

十分な大きさのデータセットを与えると、深度ごとにすべてのURLの統計を調べる必要があります。例えば、/ x/y/z/t /となる。我々は、各スロットにおける発生の数を数え、大きなジョイント確率分布表を生成する。

シンボルの分布を見ることができます。スロットのカウントが高いことは、おそらくパラメータであることを意味します。条件付き確率事象、すなわち、xがfooである確率は何か、次にxが与えられた確率yは何かなどを調べることから始める。これらを抽出するための体系的な方法ですが、それはプロミススタートのようです。

1

は、区切り文字が「/」例えば

された状態で文字列の配列に各URLを分割しましたhttp://www.example.com/foo/1/editは配列を与えます[http:,www.example.com,foo,1,edit]

2つの配列(URL)が1以外のすべてのindeciesで同じ値を共有する場合、それらは同じグループになります。

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番目の配列では2です。したがって、URLは同じグループに属します。

http://www.example.com/foo/3http://www.example.com/foo/1/editのようなURLは、このアルゴリズムでは同じグループに属しません。

関連する問題