PHP 8.4.1 Released!

SolrClient::addDocuments

(PECL solr >= 0.9.2)

SolrClient::addDocumentsAdds a collection of SolrInputDocument instances to the index

Descrizione

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

Adds a collection of documents to the index.

Elenco dei parametri

docs

An array containing the collection of SolrInputDocument instances. This array must be an actual variable.

overwrite

Whether to overwrite existing documents or not. If false there will be duplicates (several documents with the same ID).

Avviso

PECL Solr < 2.0 $allowDups was used instead of $overwrite, which does the same functionality with exact opposite bool flag.

$allowDups = false is the same as $overwrite = true

commitWithin

Number of milliseconds within which to auto commit this document. Available since Solr 1.4 . Default (0) means disabled.

When this value specified, it leaves the control of when to do the commit to Solr itself, optimizing number of commits to a minimum while still fulfilling the update latency requirements, and Solr will automatically do a commit when the oldest add in the buffer is due.

Valori restituiti

Returns a SolrUpdateResponse object or throws an exception on failure.

Errori/Eccezioni

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to process the request.

Esempi

Example #1 SolrClient::addDocuments() example

<?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);

// no changes will be written to disk unless $commitWithin is passed or SolrClient::commit is called

print_r($updateResponse->getResponse());

?>

Il precedente esempio visualizzerà qualcosa simile a:

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

)

Vedere anche:

add a note

User Contributed Notes 1 note

up
1
bjorn at bjorn-erik dot biz
14 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);
?>
To Top