最終更新日
o 必要なソフトウエア 本ソフトウエアは、これのみでコンパイルすることはできません。別途、 以下のソフトウエアが必要になります。 ・ZWAIS-0.1 (本ソフトウエアです) ftp://paprika.noc.intec.co.jp/pub/ishida/freeware/zwais/zwais-0.1.tar.gz ・freeWAIS-sf-2.1.2 ftp://ftp.wsct.wsc.com/pub/freeWAIS-sf/freeWAIS-sf-2.1/freeWAIS-sf-2.1.2.tar.gz ・YAZ-1.3 ftp://ftp.indexdata.dk/index/yaz/yaz-1.3.tar.gz ・GNU readline 2.0 (option) zwaisserver のデバック(検証用)クライアントのコンパイル時に、必要に 応じて使用します。そこかしこの GNU ソフトウエアのミラーサイトから 取得して下さい。 o 必要なソフトウエアの展開(パッチあては、この次です) % cd ~/work % gzip -cd zwais-0.1.tar.gz | tar xvf - % cd zwais-0.1 % gzip -cd ../freeWAIS-sf-2.1.2.tar.gz | tar xvf - % gzip -cd ../yaz-1.3.tar.gz | tar xvf - o 展開したソフトウエアへのパッチあて ・US-ASCII 版をコンパイルする場合 % cd ~/work/zwais-0.1/freeWAIS-sf-2.1.2 % patch -p1 < ../patch/freeWAIS-sf-2.1.2.orig_patch % patch -p1 < ../patch/freeWAIS-sf-2.1.2.zwais_orig_patch % cd ../yaz-1.3 % patch -p1 < ../patch/yaz-1.3.zwais_patch ・日本語(EUC)対応版をコンパイルする場合の作業を行った上で、更に 以下のパッチあての作業を行います。 % cd ~/work/zwais-0.1/freeWAIS-sf-2.1.2 % patch -p1 < ../patch/freeWAIS-sf-2.1.2.zwais_jp_patch % cd .. % patch -p1 < patch/zwais-0.1.jp_patch o コンパイルに際しての注意 ・zwaisserver のデバッグ(検証用)クライアント client をコンパイル する際に、GNU readline 2.0 機能を有効にする場合は、 src/Makefile の内、以下の記述をコメントアウトして、READLINE_INCS および READLINE_LIBS を適当に変更して下さい。 DEFS=-DUSE_READLINE READLINE_INCS=-I/usr/local/include READLINE_LIBS=-L/usr/local/lib -lreadline -lhistory -ltermcap なお、readline は予めインストールしておいて下さい。 →→readline をaladdinに入れてもらう
・src/Makefile の EXT_LIBS を適切に変更して下さい。一応、当方、 Solaris 2.5.1, SunOS 4.1.4 上でコンパイルした値をサンプルに記載 してあります。 ・OS オリジナルの yacc/lex の代わりに、bison/flex の使用を お薦めします。→→ bison のインストールは完了
・SunOS 4.1.x では、 freeWAIS-sf-2.1.2/ir/Makefile.in の CFLAGS に -DEXTERN_SYS_ERRLIST を追加して下さい。 o コンパイル freeWAIS-sf-2.1.2 --> yaz-1.3 --> zwais-0.1 (本体) の順番で行ないます。 ・freeWAIS-sf-2.1.2 コンパイル 詳細は freeWAIS-sf-2.1.2 の README を参照して下さい。 % cd ~/work/freeWAIS-sf-2.1.2 % ./configure configure 実行時に、大半はデフォルトの入力でよいのですが、 いくつか注意する点があります。 Checking if your systems regular expressions work... Yep, they work You have a choice of using either regular expressions that come with freeWAIS-sf or your systems regular expressions. Included regular expressions can work with 8-bit characters. Do you want to use included regular expressions? (y) ここでは、一応 y と入力して下さい。y と入力しても(しなくても)、 regex 系のライブラリを使用するプログラムパスは通過しません。ただ、 リンク時にとりあえず必要になります(使用されませんが...^^;)。n と 入力して別途 src/Makefile を変更するのも手間なので y と入力します。 This version of freeWAIS-sf supports new proximity operators by Tom Snee. He also fixed the string search code. You can now enable them at the cost of dropping the string search capability. There is currently no description of the proximity operators. Have a look in ir/query_l.l to learn about them. Use proximity instead of string search? (n)→→ n とした
Proximity 機能の内、w/, pre/ を有効にする場合は、y と入力します。 ただし、日本語対応版では、日本語による w/, pre/ は、あいかわらず 無効です(機能しません)。本来、このためには、検索時の日本語形態素 解析処理が必要なのですが、そこまでは行っていません。 You can compile freeWAIS-sf with its own ctype package. You must do it if you want to index special characters. By default, freeWAIS-sf indexes only numbers and Latin characters. See documentation for details. Do you want to use ctype that comes with freeWAIS-sf (y) ここでは、必ず y と入力して下さい。そして、続く入力では、 そのままリターンキーを入力して下さい。 Please enter your lowercase characters: Please enter your uppercase characters: これで、configure が終了します。 % make→→ 9/18 bisonをインストールしたが ここで、エラーが出てmakeできない。エラー変わらず
(make error log)
これで zwaisserver をコンパイルする際に必要なライブラリが作成され ます。 ・yaz-1.3 コンパイル 詳細は yaz-1.3 の README を参照して下さい。 % cd ~/work/zwais-0.1/yaz-1.3 % make CC=gcc これで zwaisserver をコンパイルする際に必要なライブラリが作成され ます。 ・zwais-0.1 コンパイル % cd ~/work/zwais-0.1/src % make CC=gcc これにより、目的とする zwaisserver のコンパイルと、デバッグ(検証用) クライアントの client プログラムが bin/ に作成されます。 o zwaisserver 起動 % zwaisserver -help などとタイプすると Usage が表示されます。詳細は、YAZ-1.3 のドキュメント を参照して下さい。 以下に deamon として立ち上げる例を示します。 % zwaisserver -c zwais.conf -l /tmp/zwaisserver.log tcp:@:210 & この例は、あらゆるドメインからの 210 番ポートでの接続要求に応える設定 です。なお、inetd 経由で起動することもできます。 o zwaisserver コンフィグレーションファイル -- zwais.conf -- とは zwais.conf とは、 ・IndexDir zwaisserver が検索するインデックスデータベースの存在するディレクトリ 情報 (waisserver の -d オプションに相当) ・AttrFile フィールド検索を行う場合の Query Type 1/101 の Bib1 Use Type と waisindex でフィールドインデックスを作成する際に指定したフィールド名 との対応関係を記述しているファイル名 上記 2 つの情報を記述しているファイルです。この内、IndexDir の ディレクトリ情報は必須となります。AttrFile はフィールド検索の必要に 応じて指定して下さい。 フォーマットは以下の通りです。'#' から行末まではコメントとなります。 IndexDir '\t' "directory" AttrFile '\t' "filename" o AttrFile ファイルとは フィールド検索を行う場合の Query Type 1/101 の Bib1 Use Type と waisindex でフィールドインデックスを作成する際に指定したフィールド名 との対応関係を記述しているファイルです。雛型のファイル use2field は bin/ にあります。 例えば、メールなどを "from", "subject" のフィールドでインデックス した場合、 1 from # Personal-name in bib1 4 subject # Title in bib1 などと、記述して、Query Type 1/101 の Use Type の数値との連携を とります。クライアントとサーバが了承している限りでは、上記の対応は (比較的)自由に設定できます。 フォーマットは以下の通りです。'#' から行末まではコメントとなります。 number '\t' "field" o client/irclient (Tcl/Tk) で検索時の注意事項 (細い話になりますが...) zwaisserver は、クライアントからの最大の 検索結果数の情報を、Z39.50-1995 の仕様で言うところの --Search APDUs SearchRequest ::= SEQUENCE{ referenceId smallSetUpperBound [13] -> largeSetLowerBound [14] mediumSetPresentNumber [15] replaceIndicator [16] resultSetName [17] databaseNames [18] smallSetElementSetNames [100] mediumSetElementSetNames [101] preferredRecordSyntax [104] query [21] additionalSearchInfo [203] otherInfo} largeSetLowerBound の値から取得しています。本来、最大検索結果数 のみ、サーバ側で低コストな処理で取得できればよいのですが、如何せん freeWAIS-sf-2.1.2 の検索コマンド waissearch の -m オプションに あるように、明示的にクライアントで指定する必要があります。 zwaisserver では freeWAIS-sf-2.1.2 の検索エンジン部をほぼそのまま 使用している都合上、上記の対応となっています。 これにより、 - client コマンドの場合 % client tcp:manta.isl.intec.co.jp:3950 ・ ・ ・ Z> l 100 などと、設定し、 - irclient (Tcl/Tk) コマンドの場合 irclient (Tcl/Tkスクリプト)内の、 proc open-target {target base} { ・ ・ ・ set x [lindex $profile($target) 13] if {$x == ""} { set x 2 } --> set x 100 z39 largeSetLowerBound $x などと変更して使用することになります。 (上記の変更は、あくまでも例です。^^;) o 検索してみる client コマンドは、YAZ-1.3 のドキュメントを参照して下さい。 Query Type 1/101 で使用される逆ポーランド記法 (RPN) を用いて 検索式を記述します。 また、irclient コマンドは、irTcl-1.2pl1 のドキュメントを参照して 下さい。 o ちょっと余談 本ソフトウエアは、ユーザインターフェースを含めエンドユーザが簡単に 使用できるような形態とは言えないと思います。更に、freeWAIS-sf-2.1.2 の知識を有されている方で、Z39.50 の基礎的な知識を持たれている方 (あるいは、持とうとされる方)が前提になると思います。よって、 期待されている方には(ちょっと)残念と感じるかもしれません。 今後、言語環境も含めた Z39.50 の使いやすいユーザインターフェースの 登場が期待されると思います(本当か... ?_?)。また、個人的にも何か方法 を考えていきたいと思っています。 o 参考文献 やはり、Z39.50-1995 のドキュメントが役に立ちます。その中でも、利用面で 必要になるのは、 ・Search Facility ・Retrieval Facility ・Attribute Set に関するものと思います。なお、プロトコルのドキュメントは、以下から 取得することができます。 ftp://ftp.loc.gov/pub/z3950/official/part[1234].(pdf|ps|wp|txt) また、日本語の文献では、図書館情報大学の安斎さんの書かれた http://www-student.ulis.ac.jp/~anzai/z3950/homepage.html 上記ページが大変に有用です。 -- 1997.9.08 ishida@isl.intec.co.jp