SolrClient::addDocuments()
(PECL solr >= 0.9.2)
Adds a collection of SolrInputDocument instances to the index
说明
public SolrClient::addDocuments(array $docs[,bool $overwrite=TRUE
[,int $commitWithin= 0]]): void
Adds a collection of documents to the index.
参数
- $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).Warning
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.
返回值
Returns a SolrUpdateResponse object or throws an exception on failure.
错误/异常
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.
范例
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()); ?>
以上例程的输出类似于:
SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 2 ) )
参见
- SolrClient::addDocument() Adds a document to the index
- SolrClient::commit() Finalizes all add/deletes made to the index
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); ?>