1

以下の3つの情報があります。グループ名、グループ種別、グループ順位。

簡単な例として

「ママの猫」、「猫」、「Top10」

この例は、私がこれでやっていることとはかけ離れていますが、基本的な考え方は理解できます。

グループ名は可能な値の大きな選択肢 (約 20k など) であり、グループ タイプとグループ ランキングは少量 (それぞれ 10 など) です。

sha1巨大な醜い URLを使用するのではなく、これらの一連のものに対して短い一意の識別子を考え出すためのより良い方法を見つけようとしています。

より良いアイデアはありますか?

すべての言語ソリューションに開かれているため、これに割り当てるより良いタグが思いつかないので、多くのプログラマーをここに固定します。

ありがとう。

編集:私が他の場所で見つけた1つの解決策は、最後の数文字を取り、SHA-1それらを10進数値に変換することについて述べました。このアイデアがどれほど信頼できるか、衝突の可能性が不明です。

EDIT2:mongoDBを使用し、このsha1値をメンバーとともにDBに保存して、現時点でクエリを簡単にします。別のテーブル/コレクションにフィールドを作成するための代替ソリューションを見つけようとしていますautoincrement。これは、更新スクリプトを実行するときに、より多くのクエリを意味します。

4

1 に答える 1

2

Python マッピングの場合、(grouptype、groupranking、groupname) を辞書キーとして使用するか、辞書のようなものを grouptype -> groupranking -> groupname のキーで分割することにより、辞書のサイズを小さくすることができます。

一意の URL を生成する場合、grouptype.rank.name の何が間違っているか、セパレータとして / と同じです。有効な URL タイプ関数を使用して、それぞれの無効な文字を %nn 形式に置き換えることができます。

を使用urllib.quote('/'.join([baseurl, grouptype, groupranking, groupname])してそのようなパスを生成することもできますがbaseurl + urllib.urlencode({'grouptype':grouptype,'groupranking':groupranking,'groupname':groupname})、後者は baseurl?grouptype=Whatever&.... の典型的なクエリ形式になります。

于 2013-07-10T07:03:42.013 に答える