/** * Execute full indexation * * @return void */ public function executeFull() { $results = []; foreach ($this->getTables() as $table => $columns) { if (!count($columns)) { continue; } foreach ($columns as $idx => $col) { $columns[$idx] = '`' . $col . '`'; } $select = $this->connection->select(); $fromColumns = new \Zend_Db_Expr('CONCAT(' . implode(",' ',", $columns) . ') as data_index'); $select->from($table, $fromColumns); $result = $this->connection->query($select); while ($row = $result->fetch()) { $data = $row['data_index']; $this->split($data, $results); } } $indexTable = $this->resource->getTableName('mst_misspell_index'); $this->connection->delete($indexTable); $rows = []; foreach ($results as $word => $freq) { $rows[] = ['keyword' => $word, 'trigram' => $this->text->getTrigram($word), 'frequency' => $freq / count($results)]; if (count($rows) > 1000) { $this->connection->insertArray($indexTable, ['keyword', 'trigram', 'frequency'], $rows); $rows = []; } } if (count($rows) > 0) { $this->connection->insertArray($indexTable, ['keyword', 'trigram', 'frequency'], $rows); } $this->connection->delete($this->resource->getTableName('mst_misspell_suggest')); }
/** * @expectedException \Zend_Db_Exception */ public function testInsertArrayTwoColumnsWithSimpleData() { $this->_connection->insertArray($this->_tableName, ['column1', 'column2'], [1, 2]); }