Home > read me first!
read me first!
SUZAKUとは?
SUZAKU(朱雀) はインターネット/イントラネットを対象にした、フリーのロボット型サーチエンジンです。SUZAKU には、以下のような特徴があります。
- Ruby、MySQLなどのフリーソフトをベースにしたシステムです。
- SUZAKU は、以下の機能がワンセットになっています。
・ホームページのリンクを自動的に探索する機能
・探索したホームページをダウンロード&インデックス化する機能
・キーワードに該当するホームページを検索する機能
・ブラウザによるシステムの管理機能 - ホームページのリンクの探索を、指定された同一サイト内に限定する機能があります。これにより、特定ジャンルのホームページ群を対象とした、独自のサーチエンジンを構築することができます。
- プラットフォームには、Windows/LinuxベースのPCサーバーを想定しています。高速検索が可能なMySQL をデータベースに使用しており、中小規模のサーチエンジンであれば、十分に実用的なシステムを構築することができます。例えば、ADSL + PCサーバー + SUZAKU を使って、独自のサーチエンジンを自前のサーバー上に構築し、外部に公開することができます。
- ホームページのダウンロード&インデックス化の処理を実行中でも、キーワードによる検索を行うことができます。
- ダウンロード先のサーバーを分散し、相手のサーバーに過度の負荷をかけないようにする機能や、robots.txtによる探索制限に従う機能を実装しています。
- プログラム本体は、Ruby および eruby(erb) で記述されており、ソースは公開されています。スクリプト言語による比較的コンパクトなシステムであり、改造も容易です。
投稿者 webmaster : 2002年12月01日 00:00 | コメント (0) | トラックバック (0)
ライセンスについて
SUZAKU(朱雀)はフリーソフトウェアです。あなたは、Free Software Foundation が公表した GNU General Public License version 2 (日本語訳) あるいはそれ以降の各バージョンの中からいずれかを選択し、そのバージョンが定める条項に従って本プログラムを再頒布または変更することができます。
頒布にあたっては、市場性及び特定目的適合性についての暗黙の保証を含めて、いかなる保証も行ないません。詳細についてはGNU General Public Licenseをお読みください。
投稿者 webmaster : 2002年12月01日 00:01 | コメント (0) | トラックバック (0)
開発の経緯
SUZAKUはもともと、「特定分野のホームページの検索を行うプライベート・サーチエンジンを構築し、外部に公開する」目的のために開発しました。
設計・開発にあたっての要件は、以下のようなものでした。
- 500~1000サイト程度のホームページを対象に、実用的な速度で全文検索ができる。
- google等のサーチエンジンに類似した、分かりやすいユーザーインタフェース。
- 対象となるホームページの情報収集を自動的に行う(ロボット型のサーチエンジン)。
- 対象となるホームページの情報収集を、そのサイト内に制限できる。(LINKを探索する際、直接関係ない他のサイトのホームページの情報まで収集しないように制御できる。)
- できれば毎日、遅くとも2~3日おきには、登録した全ホームページの更新状況をチェックし、検索用データベースを最新状態に更新できる。
- 5.を実現するため、追加・変更・削除されたホームページの情報だけ、検索用のデータベースに対して差分更新する。
- 情報収集の処理中(検索用データベースの更新中)でも、検索できる。(ノンストップ運用)
- 対象となるホームページの登録・削除が簡単にできる。
- 対象となるホームページ側に迷惑をかけない。(集中的なアクセスを避ける、robots.txtによる探索制限に従うなど)
- サンデープログラマが個人で、短期間に開発できる。
- 少ないリソースで運用できる。
- 少ない費用で運用できる。
もっとも、最初は自前でシステム開発するつもりはなく、既存のフリーの全文検索システムとWebページのダウンロードツールで実現できないかと考えました。具体的にはNamazuとwgetを組み合わせて出来ないかを検討したのですが、Namazuに関しては(6)データの差分更新、(7)情報収集の処理中の検索続行が、wgetに関しては(9)相手側に迷惑をかけないの実現が難しいことが分かり、このアプローチは断念しました。
どうしたものかと考えていた時、 WEB+DB PRESS Vol.2(2001年5月発売)という雑誌に、「Web検索サイトの開発」という記事が掲載されました。これは、PHP、Perl、MySQLを使って、簡単なロボット型サーチエンジンを作るというものでした。読んでみると、基本的な部分をどう作ればいいか、具体的にイメージすることができました。この記事がきっかけとなって、私は、(無謀にも)自分でサーチエンジンを作るという試みに挑戦することになりました。
私は、C++を使ったWindows上でのプログラム開発経験はそれなりにあったのですが、ネットワーク系のプログラムや、本格的なCGIプログラムの開発はやったことがありませんでした。そこで、まずはPerlやPHPの勉強を始めたのですが、PerlやPHPの言語仕様はどうにもしっくりきません。オブジェクト指向言語で、ネットワーク系のプログラムやCGIの開発に適していて、テキスト処理の開発生産性が高く、かつ仕様の美しい言語はないか? いろいろと探してみたところ、私はRubyという言語に注目しました。Rubyは、徹底したオブジェクト指向のスクリプト言語で、正規表現をはじめとするテキスト処理に役立つ豊富な機能を持ち、ネットワーク関係のライブラリも充実していました。私は、今回の開発言語としてRubyを採用することにしました。
ロボット型のサーチエンジンは、ホームページの情報を収集してデータベース化するロボット部分と、指定されたキーワードでデータベースを検索する検索エンジン部分の大きく2つの機能からなります。
- ロボット部分は、リンクをたどってインターネットを自動的に巡回し、ホームページをダウンロードする部分と、ダウンロードしたホームページの内容を分析してデータベースに格納する部分からなります。後者では、データベースに対して大量のデータ追加が発生します。
- 検索エンジン部分は、ブラウザからキーワードを指定したり、結果をブラウザに表示したりするCGIの部分と、データベースからキーワードを含むホームページのURLを検索する検索エンジン本体からなります。後者では、大量データの高速な検索処理が必要となります。
データベースの処理部分を、Rubyのようなスクリプト言語で実装するのは、処理速度の面で非常に不利です。かといって、CやC++のような言語で実装するのは、開発規模が大きくなり、完成までのハードルが非常に高くなります。私は、この部分をフリーのデータベースシステム、具体的にはMySQLに全面的に任せられないかと考えました。
MySQLは、大量データの高速な検索処理が可能なデータベースと言われていました。とはいっても最初は十分な性能が得られるかどうか不安だったのですが、プロトタイプを作ってテストしたところ、十分に実用的な性能が得られる感触を持ちました。もう一つの代表的なフリーのデータベースシステムであるPostgreSQLとの比較も行ってみましたが、MySQLは今回重要な大量データのSelect(検索)/Insert(追加)処理に関して、PostgreSQLの約5倍高速に処理できることが分かりました。ということで、データベース部分にはMySQLを採用することにしました。データベースシステムの採用により、処理内容やデータ構造の変更にも比較的柔軟に対応することができるようになり、また、開発量が減って非常にコンパクトなシステムを実現することができました。
約3ヶ月間、週末をプログラム開発にあてて、2001年8月にはベータバージョンが完成し、試験運用に入りました。
このシステムは、RubyやMySQLといったオープンソースのソフトウェアを活用したシステムですので、それらに感謝の気持ちを込めて、またソフトウェア開発に携わる者としてオープンソースの世界に少しでも貢献したいという気持ちから、SUZAKUもオープンソースのソフトウェアとして公開することにしました。公開に向けて、システムの設定機能やユーザーインタフェース、管理機能の完成度アップのための開発を行い、2002年12月に公開用システムのバージョン1.0が完成しました。公開に際して、システムの名称を、SUZAKU(朱雀)と命名しました。
2005年3月には、ruby 1.8やMySQL 4.1に対応したバージョン2.0をリリースしました。2007年9月には、従来のLinuxに加えて、Windowsにも対応したバージョン3.0をリリースしました。
投稿者 webmaster : 2005年03月20日 00:00 | コメント (0) | トラックバック (0)