Start · Sprachen · PHP · Referenz · yaz_sort

yaz_sort

Funktion

Legt die Sortierkriterien für eine YAZ-Z39.50-Verbindung fest, nach denen Suchergebnisse sortiert werden sollen.

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_sort(resource $id, string $criteria): void

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

Typ
void
Beschreibung
Diese Funktion gibt keinen Wert zurück.

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.";
}
?>
Treffer: 42

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);
    }
}
?>
Gefundene Treffer: 128

// 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.