Start · Sprachen · PHP · Referenz · SolrGenericResponse

SolrGenericResponse

Klasse

Repräsentiert eine generische Antwort des Apache-Solr-Servers und ermöglicht den Zugriff auf die zurückgelieferten Daten.

seit PHP 0.9.2 Kategorie: db

Signatur

class SolrGenericResponse extends SolrResponse

Beschreibung

SolrGenericResponse ist eine konkrete Implementierung von SolrResponse und wird als Rückgabetyp von Solr-Anfragen verwendet, die keine spezialisierte Antwortklasse besitzen. Sie kapselt die rohe Antwort des Solr-Servers und stellt Methoden bereit, um den HTTP-Status, den Antwort-Header sowie den eigentlichen Antwort-Body abzurufen.

Die Klasse wird typischerweise von Methoden wie SolrClient::ping() oder SolrClient::commit() zurückgegeben, also immer dann, wenn Solr eine Antwort ohne strukturierte Suchergebnisse liefert. Der Antwort-Body kann als SolrObject oder als serialisierter String abgerufen werden.

Über die geerbten Methoden von SolrResponse lassen sich der HTTP-Statuscode, Fehlerinformationen sowie die geparste Antwort als PHP-Objekt oder XML-String abrufen. Dies erleichtert die Fehlerbehandlung und das Logging bei Solr-Operationen erheblich.

Die Klasse kann nicht manuell instanziiert werden – Instanzen werden ausschließlich von der Solr-Extension intern erzeugt und als Rückgabewerte der entsprechenden SolrClient-Methoden zurückgeliefert.

Beispiele

Ping an den Solr-Server und Auswertung der generischen Antwort

<?php
$options = [
    'hostname' => 'localhost',
    'port'     => 8983,
    'path'     => '/solr/mycore',
];

$client = new SolrClient($options);

try {
    /** @var SolrGenericResponse $response */
    $response = $client->ping();

    // HTTP-Statuscode der Solr-Antwort prüfen
    echo 'HTTP-Status: ' . $response->getHttpStatus() . PHP_EOL;

    // Antwort als SolrObject abrufen
    $responseObject = $response->getResponse();
    echo 'Antwort-Status: ' . $responseObject->responseHeader->status . PHP_EOL;

    // Antwort als serialisierten String ausgeben
    echo 'Serialisiert: ' . $response->getDigestedResponse() . PHP_EOL;

} catch (SolrClientException $e) {
    echo 'Solr-Clientfehler: ' . $e->getMessage() . PHP_EOL;
} catch (SolrServerException $e) {
    echo 'Solr-Serverfehler: ' . $e->getMessage() . PHP_EOL;
}
HTTP-Status: 200 Antwort-Status: 0 Serialisiert: {"responseHeader":{"status":0,"QTime":1}}

Commit-Operation und Auswertung der generischen Antwort

<?php
$options = [
    'hostname' => 'localhost',
    'port'     => 8983,
    'path'     => '/solr/mycore',
];

$client = new SolrClient($options);

try {
    /** @var SolrGenericResponse $response */
    $response = $client->commit();

    // Prüfen ob ein Fehler aufgetreten ist
    if ($response->getHttpStatus() === 200) {
        echo 'Commit erfolgreich.' . PHP_EOL;

        $data = $response->getResponse();
        echo 'QTime: ' . $data->responseHeader->QTime . ' ms' . PHP_EOL;
    } else {
        echo 'Fehler beim Commit: ' . $response->getHttpStatusMessage() . PHP_EOL;
    }

} catch (SolrClientException $e) {
    echo 'Verbindungsfehler: ' . $e->getMessage() . PHP_EOL;
}
Commit erfolgreich. QTime: 42 ms

// Wichtig · Fallstricke

Nicht instanziierbar: SolrGenericResponse-Objekte dürfen nicht manuell mit new erzeugt werden. Sie werden ausschließlich intern von der Solr-Extension erstellt.

Fehlerbehandlung: Immer getHttpStatus() prüfen, bevor die eigentliche Antwort verarbeitet wird. Ein HTTP-Status ungleich 200 deutet auf einen Fehler hin, der über getHttpStatusMessage() genauer beschrieben werden kann.

Extension erforderlich: Diese Klasse gehört zur PECL-Extension solr und steht nur zur Verfügung, wenn diese installiert und aktiviert ist. Die Extension kann mit pecl install solr installiert werden.