Start · Sprachen · PHP · Referenz · SolrUpdateResponse

SolrUpdateResponse

Klasse

Repräsentiert die Antwort des Solr-Servers auf eine Aktualisierungsanfrage (z. B. Hinzufügen oder Löschen von Dokumenten).

seit PHP 0.9.2 Kategorie: db

Signatur

class SolrUpdateResponse extends SolrResponse

Beschreibung

SolrUpdateResponse ist eine Klasse der PECL-Solr-Erweiterung und wird von SolrClient-Methoden wie addDocument(), deleteById() oder commit() zurückgegeben. Sie kapselt die Antwort des Apache-Solr-Servers nach einer Schreiboperation und erlaubt dem Entwickler, den Rückgabestatus sowie etwaige Fehler zu prüfen.

Die Klasse erbt von SolrResponse und stellt daher alle gängigen Methoden wie getStatus(), getRawResponse() und getResponse() bereit. Über getResponse() erhält man ein SolrObject mit den geparsten Antwort-Daten des Servers im strukturierten Format.

Typischerweise wird SolrUpdateResponse nach Index-Änderungen genutzt, um sicherzustellen, dass die Operation serverseitig erfolgreich war. Ein HTTP-Statuscode von 200 signalisiert Erfolg, während andere Codes auf Fehler hinweisen. Besonders im Zusammenspiel mit commit()-Aufrufen ist die Auswertung der Antwort wichtig, um sicherzugehen, dass Änderungen dauerhaft in den Index übernommen wurden.

Da SolrUpdateResponse keine eigenen Konstruktor-Parameter besitzt und ausschließlich intern vom SolrClient erzeugt wird, sollte sie nicht manuell instanziiert werden.

Beispiele

Dokument hinzufügen und Antwort auswerten

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

$client = new SolrClient($options);

$doc = new SolrInputDocument();
$doc->addField('id', '42');
$doc->addField('title', 'PHP und Solr');
$doc->addField('author', 'Max Mustermann');

/** @var SolrUpdateResponse $response */
$response = $client->addDocument($doc);

// Explizit committen
$commitResponse = $client->commit();

// HTTP-Status prüfen
echo 'HTTP-Status: ' . $commitResponse->getStatus() . PHP_EOL;

// Rohantwort ausgeben
echo 'Rohantwort: ' . $commitResponse->getRawResponse() . PHP_EOL;

// Strukturierte Antwort
$responseData = $commitResponse->getResponse();
print_r($responseData);
HTTP-Status: 0 Rohantwort: {"responseHeader":{"status":0,"QTime":10}}

Dokument löschen und Ergebnis prüfen

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

$client = new SolrClient($options);

try {
    /** @var SolrUpdateResponse $response */
    $response = $client->deleteById('42');
    $client->commit();

    if ($response->getStatus() === 0) {
        echo 'Dokument erfolgreich gelöscht.' . PHP_EOL;
    } else {
        echo 'Fehler beim Löschen. Status: ' . $response->getStatus() . PHP_EOL;
    }

    // Antwort-Header analysieren
    $data = $response->getResponse();
    echo 'QTime: ' . $data->responseHeader->QTime . ' ms' . PHP_EOL;
} catch (SolrClientException $e) {
    echo 'SolrClientException: ' . $e->getMessage() . PHP_EOL;
} catch (SolrServerException $e) {
    echo 'SolrServerException: ' . $e->getMessage() . PHP_EOL;
}
Dokument erfolgreich gelöscht. QTime: 5 ms

// Wichtig · Fallstricke

Hinweis zur Instanziierung: SolrUpdateResponse sollte niemals manuell erzeugt werden. Das Objekt wird ausschließlich intern durch SolrClient-Methoden zurückgegeben.

Statuscode: Der von getStatus() zurückgegebene Wert entspricht dem Solr-internen Status (nicht dem HTTP-Statuscode). Der Wert 0 bedeutet Erfolg. Zum Abrufen des tatsächlichen HTTP-Statuscodes steht getHttpStatus() zur Verfügung.

Abhängigkeit: Die Klasse steht nur zur Verfügung, wenn die PECL-Erweiterung solr installiert und aktiviert ist (pecl install solr).