Start · Sprachen · PHP · Referenz · SolrParams

SolrParams

Klasse

Abstrakte Basisklasse, die eine Sammlung von Name-Wert-Paaren für Anfragen an einen Apache-Solr-Server verwaltet.

seit PHP 0.9.2 Kategorie: db

Signatur

abstract class SolrParams implements Serializable

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();
?>
q=php+solr&fl=id%2Ctitle%2Ccontent&rows=10&start=0&fq=category%3Aprogramming

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;
?>
Suchbegriff: apache solr q => apache solr rows => 20 fq => lang:de, status:active Nach remove: q=apache+solr&fq=lang%3Ade&fq=status%3Aactive

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