SolrClient::addDocuments
(PECL solr >= 0.9.2)
SolrClient::addDocuments — Adds a collection of SolrInputDocument instances to the index
説明
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).警告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.
例
例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
User Contributed Notes 1 note
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);
?>