Signatur
Beschreibung
SolrParams ist die abstrakte Basisklasse für Solr-Parametersammlungen wie SolrQuery und SolrModifiableParams. Sie stellt Methoden bereit, um Parameter hinzuzufügen, zu setzen, abzurufen und zu löschen, die als Name-Wert-Paare an den Solr-Server gesendet werden.
Da die Klasse abstrakt ist, wird sie nicht direkt instanziiert. Stattdessen arbeitet man mit ihren konkreten Unterklassen. Typischerweise wird SolrQuery verwendet, um Suchanfragen zu konfigurieren, während SolrModifiableParams allgemeine Parameter für andere Solr-Operationen kapselt.
Die Klasse implementiert das Serializable-Interface, sodass Parameterobjekte serialisiert, gespeichert und später wiederhergestellt werden können – nützlich etwa für das Caching häufig verwendeter Abfragestrukturen.
Methoden wie add() erlauben das Hinzufügen mehrerer Werte zu einem Parameter (Mehrfachwerte), während set() einen bestehenden Wert überschreibt. Mit get() werden Werte abgefragt, und toString() liefert die URL-kodierte Query-String-Darstellung aller Parameter.
Beispiele
Basisverwendung mit SolrQuery (Unterklasse von SolrParams)
<?php
// SolrQuery ist eine konkrete Unterklasse von SolrParams
$query = new SolrQuery();
// Suchbegriff setzen
$query->setQuery('php solr');
// Felder einschränken (mehrere Werte über add)
$query->addField('id');
$query->addField('title');
$query->addField('content');
// Ergebnisanzahl und Offset
$query->setRows(10);
$query->setStart(0);
// Filterquery hinzufügen
$query->addFilterQuery('category:programming');
// Alle Parameter als URL-String ausgeben
echo $query->toString();
?>
Direkte Parameter-Manipulation über SolrParams-Methoden
<?php
// SolrModifiableParams ist ebenfalls eine konkrete Unterklasse von SolrParams
$params = new SolrModifiableParams();
// Parameter setzen (überschreibt vorhandene Werte)
$params->set('q', 'apache solr');
$params->set('rows', '20');
// Mehrfachwert mit add hinzufügen
$params->add('fq', 'lang:de');
$params->add('fq', 'status:active');
// Einzelnen Parameter lesen
$qValue = $params->get('q');
echo 'Suchbegriff: ' . $qValue . PHP_EOL;
// Alle Parameter als Array ausgeben
$allParams = $params->getParams();
foreach ($allParams as $name => $value) {
if (is_array($value)) {
echo $name . ' => ' . implode(', ', $value) . PHP_EOL;
} else {
echo $name . ' => ' . $value . PHP_EOL;
}
}
// Parameter entfernen
$params->remove('rows');
echo 'Nach remove: ' . $params->toString() . PHP_EOL;
?>
// Wichtig · Fallstricke
Abstrakte Klasse: SolrParams kann nicht direkt instanziiert werden. Verwende SolrQuery für Suchanfragen oder SolrModifiableParams für allgemeine Parametersammlungen.
Erweiterung: Die PECL-Solr-Extension muss installiert und aktiviert sein (pecl install solr). Ab Solr-Extension Version 2.0 wurden einige Methoden geändert – überprüfe die Kompatibilität mit der eingesetzten Version.
Unterschied set() vs. add(): set() überschreibt alle vorhandenen Werte eines Parameters, während add() einen neuen Wert zu einem möglicherweise bereits vorhandenen Parameter hinzufügt (Mehrfachwerte, z. B. für fq). Das Mischen beider Methoden für denselben Parameter kann zu unerwartetem Verhalten führen.