SolrClient::addDocuments

(PECL solr >= 0.9.2)

SolrClient::addDocuments — Ajoute une collection d'instances SolrInputDocument à l'index

Description

public function SolrClient::addDocuments(array $docs, bool $overwrite = true, int $commitWithin = 0): void

Ajoute une collection de documents Ă  l'index.

Liste de paramĂštres

docs

Un tableau contenant la collection d'instances SolrInputDocument. Ce tableau doit ĂȘtre une variable rĂ©elle.

overwrite

Si l'on doit Ă©craser les documents ou non. Si vaut false, les documents seront dupliquĂ©s (plusieurs documents avec le mĂȘme ID).

Avertissement

PECL Solr < 2.0 $allowDups Ă©tait utilisĂ© au lieu de $overwrite, qui remplissait exactement la mĂȘme fonctionnalitĂ©, mais Ă  l'opposĂ©.

$allowDups = false est identique Ă  $overwrite = true

commitWithin

Nombre de millisecondes d'attente avant de valider automatiquement ce document. Disponible depuis Solr 1.4. Par défaut, vaut 0, ce qui signifie que ce mécanisme est désactivé.

Lorsque cette valeur est spécifiée, le contrÎle du moment de la validation est laissé à Solr, cherchant à optimiser le nombre de validations à son minimum, tout en gardant une exigence forte concernant la latence des mises à jour, et Solr fera automatiquement une validation lorsque le plus vieil ajout du buffer est atteint.

Valeurs de retour

Retourne un objet SolrUpdateResponse en cas de succĂšs, et lance une exception si une erreur survient.

Erreurs / Exceptions

Lance une exception SolrClientException si le client a échoué ou s'il y a eu un problÚme avec la connexion.

Lance une exception SolrServerException si le serveur Solr a Ă©chouĂ© dans l'exĂ©cution de la requĂȘte.

Exemples

Exemple #1 Exemple avec SolrClient::addDocuments()

<?php

$options
= array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$doc2 = clone $doc;

$doc2->deleteField('id');
$doc2->addField('id', 334456);

$docs = array($doc, $doc2);

$updateResponse = $client->addDocuments($docs);

// Aucune modification ne sera écrite sur le disque tant que l'argument $commitWithin ne soit passé, ou la méthode SolrClient::commit appelée.

print_r($updateResponse->getResponse());

?>

Résultat de l'exemple ci-dessus est similaire à :

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 2
        )

)

Voir aussi

add a note

User Contributed Notes 1 note

up
1
bjorn at bjorn-erik dot biz ¶
15 years ago
If you want to add a bunch of documents from a database, this would be the way to go, assuming you have fetched the records from the database and put them in an array called $recordset:

<?php
foreach ($recordset as $key=>$value){
   $docs_array[$key] = new SolrInputDocument();
   $docs_array[$key]->addField('id', $value['document_id']);
   $docs_array[$key]->addField('name',$value['document_name']);
}
$client->addDocuments($docs_array);
?>