yazproxyについて
- yazproxyはIndex Data社が提供するZ39.50対応プロキシサーバ。
- いろいろ機能はあるが、ここでは次のような利用を想定。
HTTPクライアント ←[HTTP]→ yazproxy ←[Z39.50]→ Z39.50サーバ
- この場合、クライアント側がZ39.50に対応しなくてもZ39.50サーバの検索が行えるのがメリット。
接続設定
- 接続先の設定を次のようなXML形式のファイルで定義する。
<proxy>
<target name='loc' default='1'>
<url>lx2.loc.gov:210</url>
<explain>
<serverInfo>
<host>localhost</host>
<port>9000</port>
<database>LCDB</database>
</serverInfo>
</explain>
<cql2rpn>cql2rpn.loc</cql2rpn>
</target>
</proxy>
- root要素は<proxy>。
- <target>以下に接続先サーバごとの設定を記述。
- <url>に接続先サーバのホスト名とポート番号を指定。
- <explain>/<serverInfo>にはプロキシサーバのホスト名(<host>)、ポート番号(<port>)と接続先データベース名(<database>)を定義する。この設定は検索要求時のURLに対応する。
(例) http://localhost:9000/LCDB?...
- <cql2rpn>にはインデクス設定ファイル名を記述。
インデクス設定
- クライアントからyazproxyへの検索要求はSRU(Search/Retrieve via URL)またはSRW(Search/Retrieve Web Service)で行う。以下ではSRUを用いる。
- SRUではURLに検索条件を埋め込む。次の例のうちquery以降が検索条件。maximumRecordsには取得するデータ件数を指定。
(例) http://localhost:9000/LCDB?version=1.1&operation=searchRetrieve&maximumRecords=10&query=keyword=unix
- Z39.50では検索対象(インデクス)をUse Attribute(数字)で指定するが、yazproxyではSRUによる検索要求で用いるインデクス名とUse Attributeとの対応づけを定義する。
- 次のような対応づけを想定する。
Z39.50 | SRU |
---|---|
4 | title |
7 | isbn |
8 | issn |
12 | id |
21 | subject |
31 | year |
54 | language |
1003 | author |
1016 | keyword |
1018 | publisher |
- この表の対応づけを行う設定ファイルは次のようになる。
set.cql = info:srw/cql-context-set/1/cql-v1.1
set = info:srw/cql-context-set/1/cql-v1.1
index.cql.serverChoice = 1=1016
index.cql.title = 1=4
index.cql.isbn = 1=7
index.cql.issn = 1=8
index.cql.id = 1=12
index.cql.subject = 1=21
index.cql.year = 1=31
index.cql.language = 1=54
index.cql.author = 1=1003
index.cql.keyword = 1=1016
index.cql.publisher = 1=1018
relation.* =
position.* =
structure.* =
truncation.* =
always =
- 「set.cql = info:srw/cql-context-set/1/cql-v1.1」で「cql」というインデクスセットを定義し、「set = info:srw/cql-context-set/1/cql-v1.1」はそれをデフォルトインデクスに設定している。いずれも必須。
- 「index.cql.serverChoice = 1=1016」は検索条件でインデクスを指定しなかった場合に検索対象とするインデクスを指定している。この例の場合、「query=unix」と「query=keyword=unix」が同じになる。
- 「index.cql.title = 1=4」以下でSRUで用いるインデクス名とZ39.50のUse Attributeとの対応づけを行っている。これによりSRUの検索条件(例えば「query=title=unix」)がyazproxyによりZ39.50の検索条件(例えば「@attr 1=4 unix」)に変換される。
- 「relation.* =」以下はそのほかのAttributeの扱いの設定。ここでは何もしない設定(検索要求に含めない)。
yazproxyの起動
- 次のようなコマンドで起動する。
$ yazproxy -c conf.xml @:9000 &
- この例では「conf.xml」という設定ファイルを読み込み、ポート番号9000で起動している。