STEP 13 サーチエンジンをつくろう!


こんどは、サーチエンジンだぁ! Yahoo! に代表されるような登録型のサーチエンジンをつくりました。


主な特徴
... ってところが特徴かな。

とにもかくにも動かしてみる

とにもかくにも動かしてみる。
ってカテゴリーとかグループの設定が苦しまぎれです。

中身

index.htm の中身

urlsrch.cgi の中身 本体

urlsrch.pm の中身 カスタマイズのための変数群

k2k.pl の中身 Shift JIS 文字列を検索キーワード用に変換する。
内部だけで使います。 それなりにマッチすることを期待して、わがままに変換していますので、変換結果は表示には不向きです。 うーむ... Perl とはおもえない雰囲気のコードになりました(^^;;;

chkurl.pl の中身 step11 と同じ。
シンボリックリンクにしてます。 ln -s ../bbs-ex2/chkurl.pl chkurl.pl

map.txt カテゴリーマップ

データの構造

次の2つのファイルからなっています。どちらも普通のテキストファイルです。

データ (URL)

更新時刻が新しいものから順に並んでいる普通のテキストファイルです。
処理時間を短縮するため、更新の都度、新しいものを最初にすることにしました。

$url    = $field[0];           # [0]  URL
$title  = $field[1];           # [1]  タイトル
$group  = $field[2];           # [2]  グループ
$comm   = $field[3];           # [3]  コメント
$keywd  = $field[4];           # [4]  検索用キーワード
$email  = $field[5];           # [5]  登録した方の mail addr
$owner  = $field[6];           # [6]  URL の設置者の mail addr
$last   = $field[7];           # [7]  更新時刻
$first  = $field[8];           # [8]  初回登録時刻
$ctgry  = $field[9];           # [9]  カテゴリー
$ex01   = $field[10];          # [10] 拡張用
$ex02   = $field[11];          # [11] 拡張用
$ex03   = $field[12];          # [12] 拡張用
$ex04   = $field[13];          # [13] 拡張用
$ex05   = $field[14];          # [14] 拡張用
各フィールドは '>' をセパレータとして区切りました。 フィールド内の値としての '>' は html への出力のために > として書き込まれています。
URL は、重複しない様に処理しています。更新の時などは URL が KEY になっています。
時刻は time の値のままです。1970/01/01 00:00:00 を 0 とする秒単位の時刻...だったような気がする。

どの位のデータ量で処理の限界になるのかは、サーバーの状況によって異なると思いますので、 なんともいえません(^^;;;
ちょこっとテストしてみた感じでは 1000 件では問題なく動きそうです。 10000 件だと状況によっては処理しきれないのではないかと思います。

カテゴリーマップ (map.txt)

カテゴリーマップのデータは、こんな感じです。
コードは階層を '-' でつなげる事と、 コードと名称を ':' で区切っているところが要点です。

アクセスログ

使用状況のログがとれます。

エラーログ

更新のクリティカルなエラーと思われるもののログをとります。

バックアップデータ

データのバックアップを作成します。

おまけ メール(mail.txt)

メンテナンスモード時に、メールを出さずにテキストファイルへ出力します。



他のサイトでの稼動例

こちらのサイトで稼働中です。

他のサーチエンジン

Incredible Directory もっと早く見つけていたら、自分では作らなかったのではないかと(^^;;;

戻る |ホームへ |進む