次のURLはDMM.comで"スターウォーズ"と検索した結果を示すURLなのですが、検索文字列がパーセントエンコーディングではない形式で変換されています。このように検索文字列を変換したURLを返すサイトで、変換している理由(DBの負荷分散等)と変換方式を教えてください。予想の範囲でかまいません。サイト例とともに示してもらえると助かります。よろしくお願いします。

http://www.dmm.com/search/=/category=/searchstr=wNiVhseKxJSdzJCElow_/

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/07/15 16:10:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:CampusNote No.1

回答回数2ベストアンサー獲得回数0

ポイント50pt

想像です。

たぶんインデックスのようなもので、次にアクセスしたときに早くなるのではないかなと思います。

検索するにはデータをサーチしないといけません。

データにインデックスがあると実データを探さずに、インデックスをサーチすればよちので検索が早いです。

データがもっと大量でインデックスをサーチしても遅い場合に、関数を使う場合があります。

ハッシュ関数などといったりします。

検索対象の文字を入れると、それに対応した結果が返されます。

その結果を使ってデータの格納場所を特定します。

データやインデックスをサーチしないので大量のデータを検索するときは検索が早くなります。

関数を作るのが難しい部分です。

入力したデータに対して必ず関数の結果が異なる必要があります。

私は作れません。

id:suginoy

ありがとうございます。

インデックスやパーティションのキーにする際に

データの偏りを解消するためにハッシュ関数に通しているのではと考えましたが、

重複する可能性があるのを解決できないと思いました。

2011/07/13 11:56:01
id:grankoyama No.2

回答回数560ベストアンサー獲得回数170

ポイント50pt

変換方式ですが、Base64エンコードといわれる方式に酷似しています。

http://ja.wikipedia.org/wiki/Base64


Base64で余った部分を埋める『=』の代わりに『_』を使用しているという大きな違いがあります。

『=』はURL中の文字列には使用できないと(RFC2396)で定められているようですので、

その対応だと思われます。


あと、独自の変換表を使用しているのか、変換前文字列の文字コードに細工してから

変換しているのか等……詳しい方式はわかりませんが、そのままBase64方式でデコード

できないようになっていました。

この方式が、一般的なものなのか、DMMでしか使用されていないものなのかまでは調べきれていません。

他のサイト例についてもわかりません。



使用している理由についての推測ですが、


ひとつ、できるだけ短くしたかったから。

Base64だと『あ⇒gqA=』『あい⇒gqCCog==』『あいう⇒gqCCooKk』と3分の4倍程度にデータ量が増えるのですが、

URLエンコードだと同『%82%A0、%82%A0%82%A2、%82%A0%82%A2%82%A4』と3倍に膨れ上がります。


ふたつ、機械的にアクセスされて情報を収集されるのを回避するため、

Base64をそのまま使うのではなくちょっとわかりにくい方法にした。(憶測)


等が思い至りましたが、実際のところはわかりません。


追記

>とのことですが、DMM.comはURL中に『=』を使用していますね。^^;

大嘘でした。

『=』は、予約されているだけですね。

おっしゃるとおり、区切りとして使ってます。DMMに限らず広く、世界中で。

本来の用途外での使用は避けるべき。程度に読み代えてくださいませ。

(RFCにわか仕込みなので、深くは突っ込まないでください。)

id:suginoy

ありがとうございます。かなり納得できました。

URLとしてよく使われるエンコード方式があるのかもしれませんね。

なお、

>『=』はURL中の文字列には使用できないと(RFC2396)で定められているようですので、

とのことですが、DMM.comはURL中に『=』を使用していますね。^^;

パラメータの区切り文字のように使っているようです。

例)

http://www.dmm.com/lod/akb48/-/detail/=/cid=akb48a110708/

2011/07/13 12:09:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません