人気ブログランキング | 話題のタグを見る

検索エンジンを無料スペースのInfoseekにのせてみた

エキサイトブログはいろいろと制約が多いブログである。いじれる部分があまりない。

テスト的にではあるが、このブログのエントリーを検索できるサイトを外部に置いてみることにした。

cgiが利用可能な無料スペースでの利用を前提に、cgiベースの検索エンジンを探した。

無料スペースで使うわけだから、エンジンも設置や操作が手軽なものであること、これが最低条件。

無料スペースはInfseekのiswebライト、検索エンジンはmsearchを利用することに決定。

検索エンジンを無料スペースのInfoseekにのせてみた_f0173567_6264341.jpg







選定理由



iswebの他にも山ほど無料スペースは存在するが、提供される容量が1GBみたいな大容量(?)のため何だかもったいない。だからcgi利用可で50MBのiswebにした。

それにあわせ、RDBMSがいらない、形態素解析を必要としないがインデックスは作れるmesarchを選んだ。

エキサイトブログのエントリー記事をダウンロードする



インデックス作成はローカルで実行させたいので、当ブログのエントリーをローカルサーバーにダウンロードする必要がある。

wgetならトップページから全階層のファイルを再帰的に落とせる。その際注意しなければならないのは、utf-8でエンコードされたurlへの対応。

エキサイトブログではタグに日本語を使うと、そのタグ名がutf-8でエンコードされてそのままディレクトリーとして保持される。

たとえば、「検索エンジン」をタグにしたらそのページは次のようになる。

http://nohelpdesk.exblog.jp/tags/%E6%A4%9C%E7%B4%A2%E3%82%A8%E3%83%B3%E3%82%B8%E3
%83%B3/index.html



「%E6%A4%9C%E7%B4%A2%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3」が「検索エンジン」に相当し、エキサイトブログのサーバー上にこれがディレクトリーとして作られて、その中にindex.htmlが置かれる。

これを正しくダウンロードする必要がある。

# wget -r http://nohelpdesk.exblog.jp/

本来ならこれ十分なはずである。しかし、ローカルサーバーにダウンロードしたファイルをlsコマンドで見るとディレクトリー名が壊れいるのがわかる。ちなみに、X Windowの環境は、Lang=ja_JP.eucJP。

# ls

検索エンジンを無料スペースのInfoseekにのせてみた_f0173567_5245591.jpg


EUCの環境だから、UTF-8の文字が見えないのは当たりじゃないかといわれそうだが、否。

# ls | nkf -W

検索エンジンを無料スペースのInfoseekにのせてみた_f0173567_5332815.jpg


こではダメ。

調べてみると、このような状況に対応するオプションがあった。以下はwgetのマニュアルから。

If you append ,nocontrol to the mode, as in unix,nocontrol, escap-
ing of the control characters is also switched off. You can use
--restrict-file-name=nocontrol to turn off escaping of control
characters without affecting the choice of the OS to use as file
name restriction mode.


以上から、正しくダウンロードするには次のようにすればよい。

# wget --restrict-file-name=nocontrol -r http://nohelpdesk.exblog.jp/

# ls

検索エンジンを無料スペースのInfoseekにのせてみた_f0173567_552247.jpg


# ls | nkf -W

検索エンジンを無料スペースのInfoseekにのせてみた_f0173567_5533985.jpg


UTF-8でエンコードされたディレクトリー名を含むページが正しくダウンロードされたことが確認できた。

ダウンロードしたファイル群をEUCにコード変換する



UTF-8のファイルならUTF-8としてそのまま利用したいところだが、msearchはEUCコードを前提としているため、インデックスファイルを作成する前にダウンロードした全てのファイルの文字コードをEUCに変換しなければならない。

再帰的に一括変換する。

# find . -type f -print0 | xargs -0 nkf -e --overwrite

最近知った便利な用法だ。文字コードを変換しつつ、別のファイルにコピーするのではなく、そのまま当該ファイルをEUCコードで上書きする。

さて、インデックス作成の準備はおおよそできたが、UTF-8でエンコードされているディレクトリー名もEUCに変換する必要がある。

要はgoogleで検索したときと同じように、EUC環境のmesarchでも日本語としてちゃんと表示したいだけ。

検索エンジンを無料スペースのInfoseekにのせてみた_f0173567_6121347.jpg


そこでconvmvを使う。標準でないことが多いので、場合によってはインストールが必要かもしれない。

以下は、コード変換したいディレクトリーのトップで行なうこと。また、--notestをつけなければ、コード変換せずに結果だけ確認することができる。

# convmv -r --notest -f utf8 -t euc-jp *

convmvを実行すると次のようになる。

# ls

検索エンジンを無料スペースのInfoseekにのせてみた_f0173567_6235637.jpg



エキサイトブログの仕様



msearchを導入するまでまったく気付かなかったが、やっかいな問題がある。エキサイトブログでは、http://nohelpdesk.exblog.jp/index.htmlではブログのトップページにはアクセスできないのである。

o http://nohelpdesk.exblog.jp/
x http://nohelpdesk.exblog.jp/index.html

index.htmlが存在しないわけではない。エキサイトブログではひとつのディレクトリーにひとつのindex.htmlファイルがセットとなっている。

エキサイトの事情で、index.htmlを含むurlでアクセスできないようにしているようだ。

一方、msearchでは、ファイルがある通りにインデックスを作成する。したがって、index.htmlがあれば、検索結果にもindex.htmlが含まれてしまう。

まぁ、これは当たり前のことで、エキサイト側に問題があると思うのだが、このままでは検索結果をクリックしても当該ページにアクセスできないので、msearchの一部を修正しなければならない。

修正ファイルは、indexing.pl。その中のmakedataに、処理を一行追加した。


###
### インデックス用データ作成
###
sub makedata {
my $file = $_[0];# ファイル名(引数)
my $target_dir = $_[1];# 対象ディレクトリ(引数)
my $target_url = $_[2];# 対象ディレクトリのURL(引数)
my $exclude_keys = $_[3];# 非対象キーワード群(引数)
my $mtime;# 最終更新時刻(戻り値)
my $url;# URL(戻り値)
my $title;# タイトル(戻り値)
my $contents;# インデックス用のHTMLの中身(戻り値)

## 最終更新時刻の取得
$mtime = getmodifytime($file);

## URLの作成
$url = $file;
$url =~ s/^$target_dir/$target_url/;


## ここから
$url =~ s/index\.html//gs;
## ここまで管理人追加


## ファイルの読み込み
OPEN(FILE,"<$file"); ### エキサイトの仕様でopenは全角で示す
$contents = "";
while() {
chomp;# 改行の削除
$contents .= $_;# バッファに行を追加
}
close(FILE);

...中略...

return($url,$mtime,$title,$contents);
}


urlの最後が/(スラッシュ)で終るようにした。また、日本語のディレクトリー名も表示されるようになった。

検索エンジンを無料スペースのInfoseekにのせてみた_f0173567_7384425.jpg


不出来なサイトはこちらの「ヘルプデスクじゃないっちゅうのまとめサイト(仮)」。

いずれ手を入れたいと思う。

こともが起きてしまった。これで今日の私の自由時間は終了した。

mesarchのインストールとインデックス作成については割愛する。広く利用されている検索エンジンなので、msearchに関する優良サイトはいつくも見つかると思う。

  by suiteama | 2008-06-29 07:45 | 検索エンジン

<< ドメインの力、それとも外部リン... 文字コード変換 >>

SEM SKIN - DESIGN by SEM EXE

free seo tool