Signatur
Beschreibung
yaz_sort definiert die Sortierkriterien für eine bestehende Z39.50-Verbindung, die über eine YAZ-Ressource repräsentiert wird. Die Sortierung wird beim nächsten Suchaufruf (yaz_search) berücksichtigt und ermöglicht es, Suchergebnisse serverseitig nach bestimmten Feldern und Richtungen zu ordnen.
Die Sortierkriterien werden als String übergeben, der aus einem oder mehreren durch Leerzeichen getrennten Kriterien besteht. Jedes Kriterium hat die Form Feld Ordnung, wobei Feld ein Attributpfad oder ein Feld-Bezeichner (z. B. 1=4 für Titel nach Bib-1-Attribut) und Ordnung entweder a (aufsteigend) oder d (absteigend) ist.
Die Funktion wird typischerweise eingesetzt, wenn man Bibliothekskataloge oder andere Z39.50-fähige Datenbanken abfragt und die Ergebnisse nach Relevanz, Erscheinungsjahr, Titel oder anderen Metadatenfeldern geordnet erhalten möchte. Sie muss vor yaz_search aufgerufen werden, damit die Sortierung beim Abruf angewendet wird.
Hinweis: Die YAZ-Erweiterung ist seit PHP 7.0 nicht mehr im offiziellen PHP-Kern enthalten und muss als PECL-Paket installiert werden. Nicht alle Z39.50-Server unterstützen serverseitige Sortierung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $id Pflicht | resource | Die YAZ-Verbindungsressource, die durch yaz_connect zurückgegeben wurde. |
|
| $criteria Pflicht | string | Die Sortierkriterien als String. Jedes Kriterium besteht aus einem Feldbezeichner und einer Sortierrichtung (a für aufsteigend, d für absteigend), z. B. "1=4 a" für aufsteigende Sortierung nach Titel (Bib-1-Attribut 4). Mehrere Kriterien werden durch Leerzeichen getrennt. |
Rückgabewert
Beispiele
Suche mit Sortierung nach Titel (aufsteigend)
<?php
// Verbindung zu einem Z39.50-Server herstellen
$id = yaz_connect('z3950.example.com:210/INNOPAC');
if ($id) {
// Sortierung nach Titel (Bib-1-Attribut 4) aufsteigend festlegen
yaz_sort($id, '1=4 a');
// Suche nach Büchern über PHP
yaz_search($id, 'rpn', '@attr 1=4 PHP');
// Verbindungen asynchron starten
yaz_wait();
// Fehler prüfen
$error = yaz_error($id);
if ($error) {
echo "Fehler: " . $error;
} else {
$hits = yaz_hits($id);
echo "Treffer: " . $hits . "\n";
// Ersten Datensatz abrufen
$record = yaz_record($id, 1, 'string');
echo $record;
}
} else {
echo "Verbindung fehlgeschlagen.";
}
?>
Sortierung nach Erscheinungsjahr absteigend (neueste zuerst)
<?php
// Z39.50-Verbindung aufbauen
$id = yaz_connect('z3950.loc.gov:7090/Voyager');
if ($id) {
// Sortierung nach Erscheinungsjahr (Bib-1-Attribut 31) absteigend
yaz_sort($id, '1=31 d');
// Suche starten
yaz_search($id, 'rpn', '@attr 1=1016 climate change');
yaz_wait();
if (!yaz_error($id)) {
echo "Gefundene Treffer: " . yaz_hits($id) . "\n";
// Ersten Datensatz im USMARC-Format laden
$rec = yaz_record($id, 1, 'string');
echo $rec;
} else {
echo "Fehler: " . yaz_error($id);
}
}
?>
// Wichtig · Fallstricke
Kompatibilität: Die YAZ-PHP-Erweiterung (ext/yaz) wurde mit PHP 7.0 aus dem offiziellen PHP-Kern entfernt. Sie ist nur noch als PECL-Paket verfügbar und muss separat installiert werden. In modernen PHP-Umgebungen (PHP 8+) sollte die Verfügbarkeit vor dem Einsatz sichergestellt werden.
Serverseitige Unterstützung: Nicht alle Z39.50-Server unterstützen die Sort-Operation des Z39.50-Protokolls. Wenn der Server die Sortierung nicht unterstützt, kann es zu Fehlern kommen oder die Sortierung wird ignoriert. Prüfen Sie stets yaz_error nach dem Aufruf von yaz_wait.
Reihenfolge der Aufrufe: yaz_sort muss vor yaz_search und yaz_wait aufgerufen werden, damit die Sortierung Wirkung zeigt.