AlltheWebで日本語のページを検索するなら、「Any Language」だと検索結果がかなり少なくなってしまうみたい。「Japanese」を選ぶとちゃんと検索される。
よくあるキーワードでも、キーワードによってはまったく検索されないこともあるみたい。まだ日本語に対応しきれてないところがあるのかな。検索できるキーワードの場合は、検索結果の精度はかなり高い感じ。昨日も書いたけど、Googleよりもやや高いような気もする。
検索結果がGoogleの場合と似ていることがあるけど、Googleのエンジンを使ってるってことはないよね。単にデータが新しいから精度がやや高いだけとか。
Webページに画像を載せる場合、<img>タグのwidthやheightでサイズを小さめに指定して画像を縮小させると荒い画質の画像になってしまう。多分、拡大や縮小に時間のかからないアルゴリズムを使っているからなんだろうけど。
そこで縮小表示用に小さ目の画像を別途用意して使うわけだけど、画面のキャプチャー画像のようなベタ塗り部分の多い画像だと縮小するとディザリングされて、もとがファイルサイズが小さいだけにあまりファイルサイズを減らせない。
2つの画像を用意するとそれだけ容量も必要だし、転送量も増えてしまうし。うーむ。
結城浩さんの「サイト内の検索にGoogle.comを使う方法」を参考に、Googleの代わりにAlltheWebを使ってサイト内検索をする方法を考えました。言語は日本語に限定しています。
以下のコードをHTMLファイルに記述すればOKです。uttsu.comのところは自分の使っているサーバー名にします。
<form action=http://www.alltheweb.com/search> <input type=hidden name=cat value=web> <input type=hidden name=cs value=cp932> <input type=hidden name=l value=ja> <input type=text name=q size=25 maxlength=256 value=site:uttsu.com> <input type=submit value=検索> </form>
HTMLだけの場合だとテキストエリア内に「site:○○」という文字が予め入っています。JavaScriptを使えば、これを表示しないようにできます。結城さんの「サイト内の検索にGoogle.comを使う方法」−「JavaScriptを用いてサイト内検索」で解説されている方法がAlltheWebの場合でもそのまま使えると思います。
これも結城さんのページを参考に作りました。
#!/usr/local/bin/perl
use strict;
my $my_site = 'uttsu.com';
my $my_keyword = 'uttsu';
my $q = $ENV{QUERY_STRING};
$| = 1;
main();
exit;
sub main {
$q = join('', grep(/^q=/, split(/&/, $q)));
$q =~ s/^q=//;
$my_keyword =~ tr/ /+/;
$my_keyword =~ s/(\W)/'%'.unpack("H2", $1)/ego;
print "Location: http://www.alltheweb.com/search?cat=web&cs=cp932&l=ja&q=site:$my_site+$my_keyword+$q\n\n";
}
$my_siteは自分の使っているサーバー名。$my_keywordに自分のサイト内の全てのページに含まれるキーワードを指定することにより、ドメインを持っていない場合でもサイト内検索ができるようになります。詳しくは結城さんのページを参照してください。
HTMLファイルから、次のように呼び出します。
<form action=search.cgi> <input type=text maxlength=256 name=q> <input type=submit value=検索> </form>
簡単なスクリプトですが、サンプルのHTMLファイルと一緒に置いておきます。
高木浩光さんのコラム。