Signatur
Beschreibung
SolrModifiableParams ist eine konkrete, veränderliche Implementierung der abstrakten Basisklasse SolrParams. Sie ermöglicht das Erstellen, Bearbeiten und Verwalten von Parametern, die bei Anfragen an einen Apache Solr-Server übermittelt werden sollen. Im Gegensatz zur unveränderlichen Variante können Parameter nach der Erstellung jederzeit hinzugefügt, geändert oder entfernt werden.
Typische Anwendungsfälle sind das dynamische Zusammenstellen von Anfrage-Parametern, etwa für Suchanfragen mit wechselnden Filtern, Facettierungen oder Sortieroptionen. Die Klasse eignet sich besonders dann, wenn Parameter zur Laufzeit berechnet oder bedingt gesetzt werden müssen.
Über die geerbten Methoden von SolrParams (z. B. set(), add(), get()) lassen sich einzelne Parameter gezielt manipulieren. Da die Klasse Serializable implementiert, können Parameterobjekte serialisiert und deserialisiert werden, was das Caching oder die Übertragung von Zuständen erleichtert.
Die Klasse ist Bestandteil der PECL-Erweiterung solr und steht nur zur Verfügung, wenn diese installiert und aktiviert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $params | array | [] | Optionales assoziatives Array mit initialen Name-Wert-Paaren, die dem Parameterobjekt beim Erstellen übergeben werden. |
Beispiele
Einfache Suchanfrage mit dynamischen Parametern
<?php
// Solr-Client erstellen
$options = [
'hostname' => 'localhost',
'port' => 8983,
'path' => '/solr/mycore',
];
$client = new SolrClient($options);
// Veränderliche Parameter erstellen
$params = new SolrModifiableParams();
// Suchbegriff und Felder setzen
$params->set('q', 'PHP Solr');
$params->set('rows', 10);
$params->set('start', 0);
$params->set('fl', 'id,title,score');
// Filterfrage hinzufügen
$params->add('fq', 'category:programming');
$params->add('fq', 'lang:de');
// Parameter ausgeben
echo $params->toString();
// Ausgabe: q=PHP+Solr&rows=10&start=0&fl=id%2Ctitle%2Cscore&fq=category%3Aprogramming&fq=lang%3Ade
// Anfrage senden
$query = new SolrQuery();
$query->setQuery($params->get('q'));
$response = $client->query($query);
?>
Parameter dynamisch aufbauen und überschreiben
<?php
$params = new SolrModifiableParams();
// Initiale Werte setzen
$params->set('q', '*:*');
$params->set('rows', 20);
$params->set('sort', 'score desc');
// Bestehenden Wert überschreiben
$params->set('rows', 50);
// Wert auslesen
echo 'rows = ' . $params->get('rows') . PHP_EOL;
// Parameter entfernen
$params->delete('sort');
// Alle Parameter als Array
$allParams = $params->toArray();
foreach ($allParams as $name => $value) {
echo $name . ' => ' . (is_array($value) ? implode(', ', $value) : $value) . PHP_EOL;
}
?>
// Wichtig · Fallstricke
Voraussetzung: Die PECL-Erweiterung solr muss installiert sein (pecl install solr). Ohne diese Erweiterung ist die Klasse nicht verfügbar und ein Aufruf führt zu einem fatalen Fehler.
Unterschied zu SolrQuery: Während SolrQuery speziell für Such-Anfragen mit typisierten Hilfsmethoden ausgelegt ist, bietet SolrModifiableParams eine generische und flexible Möglichkeit, beliebige Solr-Parameter zu verwalten – auch für Update-Handler oder benutzerdefinierte Request-Handler.
Serialisierung: Da die Klasse Serializable implementiert, sollte bei der Deserialisierung sichergestellt werden, dass keine ungeprüften Benutzereingaben direkt deserialisiert werden, um Object-Injection-Angriffe zu vermeiden.