To display holdings data set the syntax and the record format to "opac" (at least for Horizon ILS). It will give you an xml, containg <holding> elements with all info:
<?php
$z = yaz_connect(...
yaz_syntax($z, 'opac');
yaz_search($z, 'rpn', '@attr 1=4 "title%"');
yaz_wait();
$hits = yaz_hits($z);
yaz_range($z, 1, $hits);
yaz_present($z);
for($i = 1; $i <= $hits; $i++)
my_display(yaz_record($z, $i, 'opac'));
yaz_close($z);
function my_display($s)
{
$lines = explode("\n", trim($s));
var_dump($lines);
}
?>
yaz_search
(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)
yaz_search — 検索を準備する
説明
yaz_search() は、指定した接続で検索を行う準備をします。
yaz_connect() と同様にこの関数は非ブロックモードで 動作し、後で yaz_wait() がコールされたときのために 検索の準備をするだけです。
パラメータ
- id
-
yaz_connect() が返す接続リソース。
- type
-
クエリの型を表します。現在は "rpn" のみがサポート されており、この場合 3 番目の引数には Type-1 クエリを前置表記で 指定します。
- query
-
RPN クエリは、Z39.50 規格により定義された Type-1 クエリのテキスト 表現です。しかし、YAZ により使用されるテキスト表現では、演算子が オペランドの前にある前置表記が使用されます。クエリ文字列はトークンの 並びであり、このトークンでは 2 重引用符で括られない限り空白文字は 無視されます。アットマーク(@)で始まるトークンは 演算子とみなされ、そうでない場合は検索項目として処理されます。
RPN 演算子 構文 説明 @and query1 query2 query1 および query2 の積集合 @or query1 query2 query1 および query2 の和集合 @not query1 query2 query1 であり、query2 でない @set name 結果セットへのリファレンス @attrset set query クエリの属性セットを指定します。この構造が使用できるのは 全てのクエリの始めに一回だけです。 @attr [set] type=value query クエリに属性を適用します。型と値は属性型と属性値をそれぞれ指定する 整数です。この組みが指定された場合、属性の組を指定します。 属性についての情報は » Z39.50 Maintenance Agency サイトにあります。
注意:
もう少しわかりやすい記法を利用したい場合は、CCL パーサ関数 - yaz_ccl_conf() および yaz_ccl_parse() を使用してください。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例1 クエリの例
単純な検索は以下のように行います。
computer
クエリ
"knuth donald"
このクエリは、同じフレーズに対して 2 つの属性を適用しています。
クエリ
@and @or a b @not @or c d e
さらに複雑な例です。
@attrset gils @and @attr 1=4 art @attr 1=2000 company
When querying a SRU/SRW server, the "type" parameter must(?) be specified as "cql", e.g.
yaz_search($handle, "cql", "bath.isbn=1234");
Quick Reference For Attribute Fields
(eg: "@attr 2=" refers to the Relation attribute)
1 = Use Field
2 = Relation
3 = Position
4 = Structure
5 = Truncate
6 = Completeness
