ユーティリティもしくはアプリケーションのサンプルとして、QDBMのパッケージには二つのCGIスクリプトが付属する。第一はDepotとCuriaとVillaのデータベースファイルを管理するものである。第二はOdeumのデータベースを用いて全文検索を行うものである。
Webサーバ上でCGIが利用でき、QDBMが `/usr/local' 以下にインストールされていることが必要である。
インストール作業は、サブディレクトリ `cgi' をカレントディレクトリにして行う。
cd cgi
ビルド環境を設定する。
./configure
プログラムをビルドする。
make
一連の作業が終ると、`qadm.cgi' および `fts.cgi' が生成されているはずである。
以下の各セクションの指示に従って、利用するCGIスクリプトとその設定ファイルをWWWに公開されたディレクトリにコピーする。
`qadm.cgi' は、DepotとCuriaとVillaのデータベースを管理するためのCGIスクリプトである。これを使うと、WWWを介してデータベースの管理を行うことができる。レコードのキーと値は文字列であるものとする。Villaの比較関数は辞書順である。利用できる操作は、データベースの一覧、データベースの作成、データベースの削除、データベースのダウンロード、レコードの一覧、レコードの追加、およびレコードの削除である。
`qadm.cgi' のインストールは次の手順に従う。CGIが利用できるディレクトリに `qdbm.cgi' と `qadm.conf' をコピーする。また、同じディレクトリの直下に `qadmdb' という名前のディレクトリを作成する。例えば、CGIを置くディレクトリが /home/mikio/public_html の場合、以下のようにする。
cp qadm.cgi qadm.conf /home/mikio/public_html mkdir /home/mikio/public_html/qadmdb
`qadmdb' ディレクトリは `qadm.cgi' のプロセスが読み書きおよび実行できるパーミッションである必要がある。最も簡単には、以下のようにする。他にも、CGIスクリプトにsetuidビットを立てたり、いわゆるsuExecのような機能を用いる方法もある。
chmod 1777 /home/mikio/public_html/qadmdb
`qadm.conf' は設定ファイルである。デフォルトでは以下のような内容を持つが、ユーザが任意に修正することができる。
encoding: UTF-8 lang: en title: Administration CGI of QDBM dbdir: qadmdb keychop: true valchop: false
`encoding' はCGIスクリプトによって表示されるページおよびデータベースファイル内のレコードの文字コードを指定する。`lang' は表示されるページの言語を指定する。`title' は表示されるページのタイトルを指定する。`dbdir' はデータベースファイルが格納されるディレクトリのパスを指定する。`keychop' と `valchop' は、レコードのキーと値の内容を正規化するか否かを指定する。`true' の場合は、末尾の空白を取り除き、かつ改行コードが内容に含まれないようにする。
設置された `qadm.cgi' のURLにWebブラウザを用いてアクセスする。あとは、表示された案内にしたがってデータベースの管理を行えばよい。
自動化されたエージェントがデータベースに登録されたレコードを検索するために、URLで直接レコードを指定し、その値の内容そのものをプレーンテキストとして取得する機構もある。例えばCGIスクリプトのURLが `http://a.b.c/qadm.cgi' であり、`staff' という名前のデータベースに格納された `mikio' というキーのレコードの値を取り出すには、エージェントは `http://a.b.c/qadm.cgi/staff/mikio' を参照すればよい。すなわち、CGIスクリプトのURLの後ろに、`/' で区切ってデータベース名(接尾辞は不要)とキーを指定すればよい。
既存のデータベースファイルを管理対象にしたい場合は、`qadmdb' ディレクトリの中にそれを置けばよい。ただし、Depotによるデータベースファイルの名前には接尾辞として `.dp' をつけ、Curiaによるデータベースディレクトリの名前には接尾辞として `.cr' をつけ、Villaによるデータベースファイルの名前には接尾辞として `.vl' をつける必要がある。例えば `foo.dp'、`bar.cr'、`baz.vl' などとする。また、各データベースファイルまたはディレクトリはCGIスクリプトのプロセスによって読み書き可能である必要がある。
`qfts.cgi' は、Odeumのデータベースを用いて全文検索を行うCGIスクリプトである。これを使うと、Webサイトの全文検索を行うことができる。インデックスの作成はコマンド `odidx' を用いて行い、`qfts.cgi' によってそのデータベースの検索を行う。検索方式には、指定した語を全て含む文書を検索する「AND検索」と、指定した語の少なくとも一つを含む「OR検索」がある。検索結果はスコアに応じて並べられる。
`qfts.cgi' のインストールは次の手順に従う。CGIが利用できるディレクトリに `qfts.cgi' と `qfts.conf' をコピーする。また、同じディレクトリの直下に `casket' という名前のインデックスを作成する。例えば、CGIを置くディレクトリが /home/mikio/public_html の場合、以下のようにする。
cp qfts.cgi qfts.conf /home/mikio/public_html cd /home/mikio/public_html odidx register casket
`qfts.conf' は設定ファイルである。デフォルトでは以下のような内容を持つが、ユーザが任意に修正することができる。
encoding: ISO-8859-1 lang: en title: Full-text Search CGI with QDBM index: casket prefix: ./ diridx: index.html help: <p>This is a sample application of the inverted API of QDBM.</p>
`encoding' はCGIスクリプトによって表示されるページおよびデータベースファイル内のレコードの文字コードを指定する。`lang' は表示されるページの言語を指定する。`title' は表示されるページのタイトルを指定する。`index' はインデックスのパスを指定する。`prefix' は各文書のURIにつける接頭辞を指定する。例えば `prefix' に `http://x.y.z/foo/' を指定すると、`./bar/baz.html' や `bar/baz.html' は `http://x.y.z/foo/bar/baz.html' として表示される。`diridx' はディレクトリの代表ファイルの名前を指定する。例えば `diridx' に `index.html' を指定すると、`./foo/index.html' は `./foo/' として表示される。`help' は最初のページで表示されるヘルプメッセージを指定する。
設置された `qfts.cgi' のURLにWebブラウザを用いてアクセスする。あとは、表示された案内にしたがって全文検索を行えばよい。
インデックスを生成するコマンド `odidx' の詳細についてはQDBMの基本仕様書を参照すること。
CGIスクリプトを利用するには、WWWサーバの設定でCGIの実行を許可する必要がある。通常のコンテンツと同じ場所にCGIスクリプトを設置する場合、Apacheの設定ファイルには以下のように記述する。
Options ExecCGI AddHandler cgi-script .cgi
あるいはCGIスクリプト専用のディレクトリを設ける場合、Apacheの設定ファイルには以下のように記述する。
ScriptAlias /~mikio/cgi-bin/ "/home/mikio/public_html/cgi-bin"
WWWサーバのライブラリ検索パスに `/usr/local/lib' が含まれていない場合、それを明示的に指定する必要があるかもしれない。Apacheの設定ファイルには以下のように記述する。
SetEnv LD_LIBRARY_PATH "/lib:/usr/lib:/usr/local/lib"