public function insertMultiple(array $data) { /* * Generate the solr documents. */ $solr_documents = array(); foreach ($data as $document) { $solr_document = new Solarium_Document_ReadWrite(); foreach ($document as $field => $value) { if ($this->_getHelper()->isDefaultField($field)) { $solr_document->{$field} = $value; } else { $solr_document->{$field . '_s'} = $value; /* Custom data. */ } } $solr_documents[] = $solr_document; unset($solr_document); } /* * Create the query. */ $query = new Solarium_Query_Update(); $query->addDocuments($solr_documents); $query->addCommit(); $query->addOptimize(); /* * Update into Solr. */ $this->getClient()->update($query); }
public function testCompleteRequest() { $this->_query->addDeleteById(1); $this->_query->addRollback(); $this->_query->addDeleteQuery('*:*'); $this->_query->addDocument(new Solarium_Document_ReadWrite(array('id' => 1))); $this->_query->addCommit(); $this->_query->addOptimize(); $this->assertEquals('<update>' . '<delete><id>1</id></delete>' . '<rollback/>' . '<delete><query>*:*</query></delete>' . '<add><doc><field name="id">1</field></doc></add>' . '<commit/>' . '<optimize/>' . '</update>', $this->_builder->getRawData($this->_query)); }
/** * Commit changes * * Any remaining documents in the buffer will also be flushed * * @param boolean $overwrite * @param boolean $waitFlush * @param boolean $waitSearcher * @param boolean $expungeDeletes * @return Solarium_Result_Update */ public function commit($overwrite = null, $waitFlush = null, $waitSearcher = null, $expungeDeletes = null) { $this->_client->triggerEvent('BufferedAddCommitStart', array($this->_buffer)); $this->_updateQuery->addDocuments($this->_buffer, $overwrite); $this->_updateQuery->addCommit($waitFlush, $waitSearcher, $expungeDeletes); $result = $this->_client->update($this->_updateQuery); $this->clear(); $this->_client->triggerEvent('BufferedAddCommitEnd', array($result)); return $result; }